Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

MVC: support business logic layer

Open
#411 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
20/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
graphql, python, sqlalchemy

Research direction

Start with the SQLAlchemyObjectType example and its resolve_name1 and resolve_name2 entry points. Review how Graphene-SQLAlchemy currently handles resolvers and determine whether a business-logic layer fits the project. Done means an agreed design and documented scope for supporting this pattern; the issue names no files or tests.

Written by the indexing model from the issue text.

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)

Dominant language
Python
Stars
985
Forks
224
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from graphql-python/graphene-sqlalchemy

All issues in graphql-python/graphene-sqlalchemy

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.