@@ -394,6 +394,10 @@ def __post_init__(self, user_group_id):
394394 user_group_id = user_group_id
395395 )
396396
397+ @strawberry .field
398+ async def id (self ) -> strawberry .ID :
399+ return self ._user_group_id
400+
397401 @strawberry .field
398402 async def stats (self ) -> UserGroupStatsType :
399403 agg_data = await self .qs .aaggregate (
@@ -449,12 +453,20 @@ class UserUserGroupMembershipType:
449453 user_group_name : str
450454 members_count : int
451455
456+ @strawberry .field
457+ async def id (self , info : Info , root : UserGroup ) -> strawberry .ID :
458+ return f"{ root .user_group_id } -{ getattr (root , '_user_id' , 'NA' )} "
459+
452460
453461@strawberry_django .type (User )
454462class UserType :
455463 user_id : strawberry .ID
456464 username : strawberry .auto
457465
466+ @strawberry .field
467+ async def id (self , info : Info , root : UserGroup ) -> strawberry .ID :
468+ return root .user_id
469+
458470 @strawberry .field
459471 async def user_in_user_groups (
460472 self ,
@@ -470,6 +482,7 @@ async def user_in_user_groups(
470482 ).values ("user_group_id" )
471483 )
472484 .annotate (
485+ _user_id = models .V (root .user_id , output_field = models .IntegerField ()),
473486 user_group_name = models .F ("name" ),
474487 members_count = models .functions .Coalesce (
475488 models .Subquery (
@@ -512,9 +525,14 @@ class ProjectType:
512525 geom : str
513526 organization_name : str
514527
528+ @strawberry .field
529+ async def id (self , info : Info , root : UserGroup ) -> strawberry .ID :
530+ return root .project_id
531+
515532
516533@strawberry .type
517534class UserGroupUserMembershipType :
535+ id : strawberry .ID
518536 user_id : str
519537 username : str
520538 is_active : bool
@@ -535,6 +553,10 @@ class UserGroupType:
535553 archived_at : strawberry .auto
536554 is_archived : strawberry .auto
537555
556+ @strawberry .field
557+ async def id (self , info : Info , root : UserGroup ) -> strawberry .ID :
558+ return root .user_group_id
559+
538560 # TODO: Make this a generic module
539561 @strawberry .field
540562 async def user_memberships (
@@ -579,10 +601,14 @@ def _subquery_generator(agg_func):
579601 offset = pagination .offset ,
580602 get_count = lambda : qs .acount (),
581603 queryset = [
582- UserGroupUserMembershipType (** item )
604+ UserGroupUserMembershipType (
605+ id = f"{ item ['user_id' ]} -{ item .pop ('user_group_id' )} " ,
606+ ** item ,
607+ )
583608 async for item in paginated_qs .values (
584609 # NOTE: Defining manual select fields since DB doesn't have field id but Django assumes it has
585610 "user_id" ,
611+ "user_group_id" ,
586612 "is_active" ,
587613 # Annotate fields
588614 "username" ,
0 commit comments