Just decorators and Python. Your SQLModel classes become GraphQL APIs instantly.
Plus: expose your GraphQL via MCP to AI assistants (Claude, GPT, etc.) with zero extra code.
80 karma · joined August 16, 2024
Just decorators and Python. Your SQLModel classes become GraphQL APIs instantly.
Plus: expose your GraphQL via MCP to AI assistants (Claude, GPT, etc.) with zero extra code.
class Story(BaseModel, BaseEntity):
__pydantic_resolve_relationships__ = [
Relationship( field='id', target_kls=list[task_schema.Task], loader=task_loader.story_to_task_loader),
Relationship( field='owner_id', target_kls=user_schema.User, loader=user_loader.user_batch_loader)
]
id: int
name: str
owner_id: int
sprint_id: int
model_config = ConfigDict(from_attributes=True)
and consume itclass Story1(DefineSubset):
__subset__ = (BaseStory, ('id', 'name', 'owner_id'))
tasks: Annotated[list[Task1], LoadBy('id')] = []
assignee: Annotated[Optional[BaseUser], LoadBy('owner_id')] = None
related_users: list[BaseUser] = []
def post_related_users(self, collector=Collector(alias='related_users')):
return collector.values()Easily construct complex business data by defining ER diagrams, combining data, and applying various data adjustment methods
Minimal cognitive load
Extremely developer-friendly for those with GraphQL experience, helping improve the code quality and maintainability of API integrations
When combined with fastapi-voyager, it allows visualizing the constructed code graphically
application level ER diagram can provide much more information for business entities and hide unnecesary middle tables.
definition: https://github.com/allmonday/composition-oriented-developmen...
fastapi-voyager itself is also improved a lot for better experiences.
Visualize your FastAPI endpoints, and explore them interactively.
- better search experience - better graph interaction - persistent page in query string
@subset(User) class PickedUser: ....
the goal is to make the dependencies clear for developers, and figure out the potential impacts from one node to others.
pydantic-resolve is just another my project to make the process of data composition close to ER model and get rid of glue codes like 'for loops'.
those are clusters based on modules, you can swith off by toggle 'show module cluster'
and in local env, you can 'really' open it in vscode.
in voyager their relationships are visualized and very close to the source code.
pick tag/routes at left panel, and see subgraphs
double click to see field table and source code, click link to see source code in github
click focus to hide other nodes.
...
fastapi-voyager, from left to right, is tag, routes(apis) and response_models, it indicates the internal relationship between routes, which can help developers/PO easily figure out the data structure.