feat(workspaces): emit who will be added to workspace for a given project move (#4332)
* wip * feat(workspaces): preflight service wip * feat(workspaces): move project to workspace dry run * fix(workspaces): add tests and refine query * chore(workspaces): gqlgen
This commit is contained in:
@@ -3,10 +3,12 @@ import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
||||
import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
|
||||
import { getPaginatedItemsFactory } from '@/modules/shared/services/paginatedItems'
|
||||
import { WorkspaceTeamMember } from '@/modules/workspaces/domain/types'
|
||||
import { intersectProjectCollaboratorsAndWorkspaceCollaboratorsFactory } from '@/modules/workspaces/repositories/projects'
|
||||
import {
|
||||
countInvitableCollaboratorsByProjectIdFactory,
|
||||
getInvitableCollaboratorsByProjectIdFactory
|
||||
} from '@/modules/workspaces/repositories/users'
|
||||
import { getMoveProjectToWorkspaceDryRunFactory } from '@/modules/workspaces/services/projects'
|
||||
|
||||
const { FF_WORKSPACES_MODULE_ENABLED } = getFeatureFlags()
|
||||
|
||||
@@ -46,6 +48,25 @@ export default FF_WORKSPACES_MODULE_ENABLED
|
||||
cursor: args.cursor ?? undefined,
|
||||
limit: args.limit
|
||||
})
|
||||
},
|
||||
moveToWorkspaceDryRun: async (parent, args) => {
|
||||
const { id: projectId } = parent
|
||||
const { workspaceId } = args
|
||||
|
||||
const { addedToWorkspace } = await getMoveProjectToWorkspaceDryRunFactory({
|
||||
intersectProjectCollaboratorsAndWorkspaceCollaborators:
|
||||
intersectProjectCollaboratorsAndWorkspaceCollaboratorsFactory({ db })
|
||||
})({ projectId, workspaceId })
|
||||
|
||||
return addedToWorkspace
|
||||
}
|
||||
},
|
||||
ProjectMoveToWorkspaceDryRun: {
|
||||
addedToWorkspace: async (parent, args) => {
|
||||
return args.limit ? parent.slice(0, args.limit) : parent
|
||||
},
|
||||
addedToWorkspaceTotalCount: async (parent) => {
|
||||
return parent.length
|
||||
}
|
||||
}
|
||||
} as Resolvers)
|
||||
|
||||
@@ -2,7 +2,6 @@ import { db } from '@/db/knex'
|
||||
import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
||||
import { removePrivateFields } from '@/modules/core/helpers/userHelper'
|
||||
import {
|
||||
getProjectCollaboratorsFactory,
|
||||
updateProjectFactory,
|
||||
upsertProjectRoleFactory,
|
||||
getRolesByUserIdFactory,
|
||||
@@ -12,7 +11,8 @@ import {
|
||||
grantStreamPermissionsFactory,
|
||||
legacyGetStreamsFactory,
|
||||
getUserStreamsPageFactory,
|
||||
getUserStreamsCountFactory
|
||||
getUserStreamsCountFactory,
|
||||
getStreamCollaboratorsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { InviteCreateValidationError } from '@/modules/serverinvites/errors'
|
||||
import {
|
||||
@@ -1027,7 +1027,7 @@ export = FF_WORKSPACES_MODULE_ENABLED
|
||||
getProject: getProjectFactory({ db }),
|
||||
updateProject: updateProjectFactory({ db }),
|
||||
upsertProjectRole: upsertProjectRoleFactory({ db }),
|
||||
getProjectCollaborators: getProjectCollaboratorsFactory({ db }),
|
||||
getProjectCollaborators: getStreamCollaboratorsFactory({ db }),
|
||||
getWorkspaceRolesAndSeats: getWorkspaceRolesAndSeatsFactory({ db }),
|
||||
updateWorkspaceRole: updateWorkspaceRoleFactory({
|
||||
getWorkspaceRoles: getWorkspaceRolesFactory({ db }),
|
||||
@@ -1519,7 +1519,7 @@ export = FF_WORKSPACES_MODULE_ENABLED
|
||||
getTotalCount: getWorkspaceCollaboratorsTotalCountFactory({ db })
|
||||
})({
|
||||
workspaceId: parent.id,
|
||||
limit: args.limit,
|
||||
limit: args.limit ?? 100,
|
||||
cursor: args.cursor ?? undefined
|
||||
})
|
||||
return team
|
||||
|
||||
Reference in New Issue
Block a user