71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { Roles } from '@speckle/shared'
|
|
import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
|
import {
|
|
getStreamFileUploads,
|
|
getFileInfo,
|
|
getStreamPendingModels,
|
|
getBranchPendingVersions
|
|
} from '@/modules/fileuploads/repositories/fileUploads'
|
|
import { authorizeResolver } from '@/modules/shared'
|
|
import {
|
|
FileImportSubscriptions,
|
|
filteredSubscribe
|
|
} from '@/modules/shared/utils/subscriptions'
|
|
|
|
export = {
|
|
Stream: {
|
|
async fileUploads(parent) {
|
|
return await getStreamFileUploads({ streamId: parent.id })
|
|
},
|
|
async fileUpload(_parent, args) {
|
|
return await getFileInfo({ fileId: args.id })
|
|
}
|
|
},
|
|
Project: {
|
|
async pendingImportedModels(parent, args) {
|
|
return await getStreamPendingModels(parent.id, args)
|
|
}
|
|
},
|
|
Model: {
|
|
async pendingImportedVersions(parent, args) {
|
|
return await getBranchPendingVersions(parent.streamId, parent.name, args)
|
|
}
|
|
},
|
|
FileUpload: {
|
|
projectId: (parent) => parent.streamId,
|
|
modelName: (parent) => parent.branchName,
|
|
convertedVersionId: (parent) => parent.convertedCommitId,
|
|
async model(parent, _args, ctx) {
|
|
return await ctx.loaders.streams.getStreamBranchByName
|
|
.forStream(parent.streamId)
|
|
.load(parent.branchName.toLowerCase())
|
|
}
|
|
},
|
|
Subscription: {
|
|
projectPendingModelsUpdated: {
|
|
subscribe: filteredSubscribe(
|
|
FileImportSubscriptions.ProjectPendingModelsUpdated,
|
|
async (payload, args, ctx) => {
|
|
const { id: projectId } = args
|
|
if (payload.projectId !== projectId) return false
|
|
|
|
await authorizeResolver(ctx.userId, projectId, Roles.Stream.Reviewer)
|
|
return true
|
|
}
|
|
)
|
|
},
|
|
projectPendingVersionsUpdated: {
|
|
subscribe: filteredSubscribe(
|
|
FileImportSubscriptions.ProjectPendingVersionsUpdated,
|
|
async (payload, args, ctx) => {
|
|
const { id: projectId } = args
|
|
if (payload.projectId !== projectId) return false
|
|
|
|
await authorizeResolver(ctx.userId, projectId, Roles.Stream.Reviewer)
|
|
return true
|
|
}
|
|
)
|
|
}
|
|
}
|
|
} as Resolvers
|