From ee11ed1384ca3b0bb76eabb5de0e462cf47a0c9c Mon Sep 17 00:00:00 2001 From: guru_sainath Date: Wed, 9 Oct 2024 14:34:54 +0530 Subject: [PATCH] [MOBIL-319] chore: combine user details and current workspace details in a single query (#1406) * chore: added user information query in dashboard * dev: removed print statements --- apiserver/plane/graphql/queries/dashboard.py | 36 ++++++++++++++++++++ apiserver/plane/graphql/schema.py | 2 ++ apiserver/plane/graphql/types/dashboard.py | 12 +++++++ 3 files changed, 50 insertions(+) create mode 100644 apiserver/plane/graphql/queries/dashboard.py create mode 100644 apiserver/plane/graphql/types/dashboard.py diff --git a/apiserver/plane/graphql/queries/dashboard.py b/apiserver/plane/graphql/queries/dashboard.py new file mode 100644 index 0000000000..85eb6b5abb --- /dev/null +++ b/apiserver/plane/graphql/queries/dashboard.py @@ -0,0 +1,36 @@ +from typing import Optional + +# Third-Party Imports +import strawberry +from asgiref.sync import sync_to_async + +# Strawberry Imports +from strawberry.types import Info +from strawberry.permission import PermissionExtension + + +# Module Imports +from plane.db.models import Workspace, Profile +from plane.graphql.types.dashboard import UserInformationType +from plane.graphql.permissions.workspace import IsAuthenticated + + +@strawberry.type +class userInformationQuery: + @strawberry.field( + extensions=[PermissionExtension(permissions=[IsAuthenticated()])] + ) + async def userInformation(self, info: Info) -> UserInformationType: + profile = await sync_to_async(Profile.objects.get)( + user=info.context.user + ) + + workspace_id = ( + profile.last_workspace_id if profile.last_workspace_id else None + ) + if workspace_id: + workspace = await sync_to_async(Workspace.objects.get)( + id=workspace_id + ) + + return UserInformationType(user=info.context.user, workspace=workspace) diff --git a/apiserver/plane/graphql/schema.py b/apiserver/plane/graphql/schema.py index 7085a9eccb..6236b9baca 100644 --- a/apiserver/plane/graphql/schema.py +++ b/apiserver/plane/graphql/schema.py @@ -46,6 +46,7 @@ from .queries.issues import ( IssuesSearchQuery, SubIssuesQuery, ) +from .queries.dashboard import userInformationQuery # mutations from .mutations.workspace import WorkspaceMutation, WorkspaceInviteMutation @@ -125,6 +126,7 @@ class Query( ModuleIssueUserPropertyQuery, IssueRelationQuery, IssuesSearchQuery, + userInformationQuery, ): pass diff --git a/apiserver/plane/graphql/types/dashboard.py b/apiserver/plane/graphql/types/dashboard.py new file mode 100644 index 0000000000..ebf21b86ac --- /dev/null +++ b/apiserver/plane/graphql/types/dashboard.py @@ -0,0 +1,12 @@ +# strawberry imports +import strawberry + +# module imports +from plane.graphql.types.users import UserType +from plane.graphql.types.workspace import WorkspaceType + + +@strawberry.type +class UserInformationType: + user: UserType + workspace: WorkspaceType