Skip to content

MVC: support business logic layer #411

Open
@ego

Description

We have Model and View aka Node, but we lack a way to write code between them.

class PetBusinessLogic:
    def __init__(self, pet):
        self.pet = pet

    @property
    def name1(self):
        return self.pet.name + "!"

    @property
    def name2(self):
        return self.pet.name + "!"


class Pet(SQLAlchemyObjectType):
    class Meta:
        model = PetModel
        name = "Pet"
        interfaces = (relay.Node,)
        batching = True

    def resolve_name1(node, info):
        # write here application logic code for a large project is not good idea.
        # so we need some controller aka PetBusinessLogic
        return PetBusinessLogic(node).name1    # DRY and I would like to initialize it once

    def resolve_name2(node, info):
        return PetBusinessLogic(node).name2  # DRY and I would like to initialize it once

Any suggestions for this design problem?
*(put this PetBusinessLogic into model is also bad idea)

Activity

ego

ego commented on May 3, 2024

@ego
Author

@syrusakbary any thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

      Participants

      @ego

      Issue actions

        MVC: support business logic layer · Issue #411 · graphql-python/graphene-sqlalchemy