2 pointsby tank-343 hours ago2 comments
  • tank-343 hours ago
    declare the relationship:

    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 it

    class 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()