Files
speckle-server/packages/server/modules/fileuploads/services/management.ts
T
2024-09-26 15:26:48 +03:00

54 lines
1.8 KiB
TypeScript

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