33
44from bcsd_api .filter .members import MemberFilter
55from bcsd_api .graphql .context import GqlContext , require_user
6+ from bcsd_api .graphql .convert import from_model , from_paged
67
78from . import service
8- from .schema import MemberDetail , MemberResponse
99from .types import (
1010 FiltersType ,
1111 MeType ,
@@ -26,25 +26,6 @@ def _to_filter(inp: MemberFilterInput) -> MemberFilter:
2626 )
2727
2828
29- def _to_member (m : MemberResponse ) -> MemberType :
30- return MemberType (
31- id = m .id , name = m .name , email = m .email ,
32- status = m .status , track = m .track ,
33- team = m .team , payment_status = m .payment_status ,
34- )
35-
36-
37- def _to_detail (m : MemberDetail ) -> MemberDetailType :
38- return MemberDetailType (
39- id = m .id , name = m .name , email = m .email ,
40- status = m .status , track = m .track ,
41- team = m .team , payment_status = m .payment_status ,
42- department = m .department , student_id = m .student_id ,
43- school_email = m .school_email , phone = m .phone ,
44- join_date = m .join_date , last_updated = m .last_updated ,
45- )
46-
47-
4829def resolve_members (
4930 info : Info [GqlContext , None ],
5031 filter : MemberFilterInput | None = None ,
@@ -53,26 +34,18 @@ def resolve_members(
5334 require_user (ctx )
5435 filt = _to_filter (filter ) if filter else MemberFilter .model_validate ({})
5536 paged = service .list_members (ctx .member_repo , filt )
56- items = [_to_member (m ) for m in paged .items ]
57- return PagedMembers (
58- items = items , total = paged .total ,
59- page = paged .page , size = paged .size ,
60- )
37+ return from_paged (paged , MemberType , PagedMembers )
6138
6239
6340def resolve_member (info : Info [GqlContext , None ], id : strawberry .ID ) -> MemberDetailType :
6441 require_user (info .context )
6542 m = service .get_member (info .context .member_repo , id )
66- return _to_detail ( m )
43+ return from_model ( m , MemberDetailType )
6744
6845
6946def resolve_filters (info : Info [GqlContext , None ]) -> FiltersType :
7047 f = service .get_filters (info .context .conn )
71- return FiltersType (
72- tracks = f .tracks ,
73- statuses = f .statuses ,
74- payment_statuses = f .payment_statuses ,
75- )
48+ return from_model (f , FiltersType )
7649
7750
7851def resolve_tracks (info : Info [GqlContext , None ]) -> list [str ]:
@@ -90,5 +63,5 @@ def resolve_me(info: Info[GqlContext, None]) -> MeType:
9063 return MeType (
9164 id = user ["sub" ],
9265 email = user ["email" ],
93- member = _to_detail (detail ),
66+ member = from_model (detail , MemberDetailType ),
9467 )
0 commit comments