Files
speckle-server/packages/server/modules/fileuploads/services/management.ts
T
2023-12-04 10:55:40 +02:00

47 lines
1.5 KiB
TypeScript

import {
ProjectFileImportUpdatedMessageType,
ProjectPendingModelsUpdatedMessageType,
ProjectPendingVersionsUpdatedMessageType
} from '@/modules/core/graph/generated/graphql'
import { getStreamBranchByName } from '@/modules/core/repositories/branches'
import {
saveUploadFile,
SaveUploadFileInput
} from '@/modules/fileuploads/repositories/fileUploads'
import { FileImportSubscriptions, publish } from '@/modules/shared/utils/subscriptions'
export async function insertNewUploadAndNotify(upload: SaveUploadFileInput) {
const branch = await getStreamBranchByName(upload.streamId, upload.branchName)
const file = await saveUploadFile(upload)
if (!branch) {
await publish(FileImportSubscriptions.ProjectPendingModelsUpdated, {
projectPendingModelsUpdated: {
id: file.id,
type: ProjectPendingModelsUpdatedMessageType.Created,
model: file
},
projectId: file.streamId
})
} else {
await publish(FileImportSubscriptions.ProjectPendingVersionsUpdated, {
projectPendingVersionsUpdated: {
id: file.id,
type: ProjectPendingVersionsUpdatedMessageType.Created,
version: file
},
projectId: file.streamId,
branchName: file.branchName
})
}
await publish(FileImportSubscriptions.ProjectFileImportUpdated, {
projectFileImportUpdated: {
id: file.id,
type: ProjectFileImportUpdatedMessageType.Created,
upload: file
},
projectId: file.streamId
})
}