From 9669a94552332d26166d7269160689d907efcd8e Mon Sep 17 00:00:00 2001 From: Alessandro Magionami Date: Mon, 16 Sep 2024 17:27:43 +0200 Subject: [PATCH] chore(workspaces): optimize project roles resolvers --- packages/server/codegen.yml | 1 + packages/server/modules/core/graph/generated/graphql.ts | 6 +++--- .../modules/workspaces/graph/resolvers/workspaces.ts | 9 +++++++-- .../server/modules/workspacesCore/helpers/graphTypes.ts | 4 ++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/server/codegen.yml b/packages/server/codegen.yml index 45848709e..8fcd30f13 100644 --- a/packages/server/codegen.yml +++ b/packages/server/codegen.yml @@ -67,6 +67,7 @@ generates: SmartTextEditorValue: '@/modules/core/services/richTextEditorService#SmartTextEditorValueSchema' BlobMetadata: '@/modules/blobstorage/domain/types#BlobStorageItem' ServerWorkspacesInfo: '@/modules/core/helpers/graphTypes#GraphQLEmptyReturn' + ProjectRole: '@/modules/workspacesCore/helpers/graphTypes#ProjectRoleGraphQLReturn ' modules/cross-server-sync/graph/generated/graphql.ts: plugins: - 'typescript' diff --git a/packages/server/modules/core/graph/generated/graphql.ts b/packages/server/modules/core/graph/generated/graphql.ts index 8a83ac705..33b5f5c69 100644 --- a/packages/server/modules/core/graph/generated/graphql.ts +++ b/packages/server/modules/core/graph/generated/graphql.ts @@ -5,7 +5,7 @@ import { CommentReplyAuthorCollectionGraphQLReturn, CommentGraphQLReturn } from import { PendingStreamCollaboratorGraphQLReturn } from '@/modules/serverinvites/helpers/graphTypes'; import { FileUploadGraphQLReturn } from '@/modules/fileuploads/helpers/types'; import { AutomateFunctionGraphQLReturn, AutomateFunctionReleaseGraphQLReturn, AutomationGraphQLReturn, AutomationRevisionGraphQLReturn, AutomationRevisionFunctionGraphQLReturn, AutomateRunGraphQLReturn, AutomationRunTriggerGraphQLReturn, AutomationRevisionTriggerDefinitionGraphQLReturn, AutomateFunctionRunGraphQLReturn, TriggeredAutomationsStatusGraphQLReturn, ProjectAutomationMutationsGraphQLReturn, ProjectTriggeredAutomationsStatusUpdatedMessageGraphQLReturn, ProjectAutomationsUpdatedMessageGraphQLReturn, UserAutomateInfoGraphQLReturn } from '@/modules/automate/helpers/graphTypes'; -import { WorkspaceGraphQLReturn, WorkspaceBillingGraphQLReturn, WorkspaceMutationsGraphQLReturn, WorkspaceInviteMutationsGraphQLReturn, WorkspaceProjectMutationsGraphQLReturn, PendingWorkspaceCollaboratorGraphQLReturn, WorkspaceCollaboratorGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes'; +import { WorkspaceGraphQLReturn, WorkspaceBillingGraphQLReturn, WorkspaceMutationsGraphQLReturn, WorkspaceInviteMutationsGraphQLReturn, WorkspaceProjectMutationsGraphQLReturn, PendingWorkspaceCollaboratorGraphQLReturn, WorkspaceCollaboratorGraphQLReturn, ProjectRoleGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes'; import { WebhookGraphQLReturn } from '@/modules/webhooks/helpers/graphTypes'; import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService'; import { BlobStorageItem } from '@/modules/blobstorage/domain/types'; @@ -4403,7 +4403,7 @@ export type ResolversTypes = { ProjectPendingModelsUpdatedMessageType: ProjectPendingModelsUpdatedMessageType; ProjectPendingVersionsUpdatedMessage: ResolverTypeWrapper & { version: ResolversTypes['FileUpload'] }>; ProjectPendingVersionsUpdatedMessageType: ProjectPendingVersionsUpdatedMessageType; - ProjectRole: ResolverTypeWrapper & { project: ResolversTypes['Project'] }>; + ProjectRole: ResolverTypeWrapper; ProjectTestAutomationCreateInput: ProjectTestAutomationCreateInput; ProjectTriggeredAutomationsStatusUpdatedMessage: ResolverTypeWrapper; ProjectTriggeredAutomationsStatusUpdatedMessageType: ProjectTriggeredAutomationsStatusUpdatedMessageType; @@ -4654,7 +4654,7 @@ export type ResolversParentTypes = { ProjectMutations: MutationsObjectGraphQLReturn; ProjectPendingModelsUpdatedMessage: Omit & { model: ResolversParentTypes['FileUpload'] }; ProjectPendingVersionsUpdatedMessage: Omit & { version: ResolversParentTypes['FileUpload'] }; - ProjectRole: Omit & { project: ResolversParentTypes['Project'] }; + ProjectRole: ProjectRoleGraphQLReturn ; ProjectTestAutomationCreateInput: ProjectTestAutomationCreateInput; ProjectTriggeredAutomationsStatusUpdatedMessage: ProjectTriggeredAutomationsStatusUpdatedMessageGraphQLReturn; ProjectUpdateInput: ProjectUpdateInput; diff --git a/packages/server/modules/workspaces/graph/resolvers/workspaces.ts b/packages/server/modules/workspaces/graph/resolvers/workspaces.ts index 2b1c373a1..8c0a62f99 100644 --- a/packages/server/modules/workspaces/graph/resolvers/workspaces.ts +++ b/packages/server/modules/workspaces/graph/resolvers/workspaces.ts @@ -740,19 +740,24 @@ export = FF_WORKSPACES_MODULE_ENABLED role: async (parent) => { return parent.workspaceRole }, - projectRoles: async (parent, _args, ctx) => { + projectRoles: async (parent) => { const projectRoles = await getRolesByUserIdFactory({ db })({ userId: parent.id, workspaceId: parent.workspaceId }) return await Promise.all( projectRoles.map(({ role, resourceId }) => ({ - project: ctx.loaders.streams.getStream.load(resourceId), + projectId: resourceId, role })) ) } }, + ProjectRole: { + project: async (parent, _args, ctx) => { + return await ctx.loaders.streams.getStream.load(parent.projectId) + } + }, PendingWorkspaceCollaborator: { workspaceName: async (parent, _args, ctx) => { const workspace = await ctx.loaders.workspaces!.getWorkspace.load( diff --git a/packages/server/modules/workspacesCore/helpers/graphTypes.ts b/packages/server/modules/workspacesCore/helpers/graphTypes.ts index 76f518ffc..8168e0754 100644 --- a/packages/server/modules/workspacesCore/helpers/graphTypes.ts +++ b/packages/server/modules/workspacesCore/helpers/graphTypes.ts @@ -9,6 +9,10 @@ export type WorkspaceBillingGraphQLReturn = { parent: Workspace } export type WorkspaceMutationsGraphQLReturn = MutationsObjectGraphQLReturn export type WorkspaceInviteMutationsGraphQLReturn = MutationsObjectGraphQLReturn export type WorkspaceProjectMutationsGraphQLReturn = MutationsObjectGraphQLReturn +export type ProjectRoleGraphQLReturn = { + role: string + projectId: string +} export type PendingWorkspaceCollaboratorGraphQLReturn = { id: string