2e86a723c6
* feat(fileimport-service): add next gen file importer * feat(fileimports): integrate server and fileimporter * chore(dui3): remove leftover artifacts * fix(server): test typing fixes * fix(fileimports): test and pr comment fixes * feat(fileimports: moare test fixes * fix(fileimports): tests and yarn dedupe
134 lines
3.9 KiB
TypeScript
134 lines
3.9 KiB
TypeScript
import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations'
|
|
import {
|
|
ProjectFileImportUpdatedMessageType,
|
|
ProjectPendingModelsUpdatedMessageType,
|
|
ProjectPendingVersionsUpdatedMessageType
|
|
} from '@/modules/core/graph/generated/graphql'
|
|
import {
|
|
SaveUploadFile,
|
|
NotifyChangeInFileStatus,
|
|
SaveUploadFileV2,
|
|
SaveUploadFileInput,
|
|
PushJobToFileImporter,
|
|
InsertNewUploadAndNotify
|
|
} from '@/modules/fileuploads/domain/operations'
|
|
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
|
|
})
|
|
}
|
|
|
|
export const insertNewUploadAndNotifyFactoryV2 =
|
|
(deps: {
|
|
pushJobToFileImporter: PushJobToFileImporter
|
|
saveUploadFile: SaveUploadFileV2
|
|
publish: PublishSubscription
|
|
}): InsertNewUploadAndNotify =>
|
|
async (upload) => {
|
|
const file = await deps.saveUploadFile(upload)
|
|
|
|
await deps.publish(FileImportSubscriptions.ProjectFileImportUpdated, {
|
|
projectFileImportUpdated: {
|
|
id: file.id,
|
|
type: ProjectFileImportUpdatedMessageType.Created,
|
|
upload: {
|
|
...file,
|
|
streamId: upload.projectId,
|
|
branchName: upload.modelName
|
|
}
|
|
},
|
|
projectId: file.projectId
|
|
})
|
|
|
|
await deps.pushJobToFileImporter({
|
|
fileName: file.fileName,
|
|
fileType: file.fileType,
|
|
projectId: file.projectId,
|
|
modelId: upload.modelId,
|
|
blobId: file.id,
|
|
jobId: file.id,
|
|
userId: upload.userId
|
|
})
|
|
}
|
|
|
|
export const notifyChangeInFileStatus =
|
|
(deps: {
|
|
getStreamBranchByName: GetStreamBranchByName
|
|
publish: PublishSubscription
|
|
}): NotifyChangeInFileStatus =>
|
|
async (params) => {
|
|
const { file } = params
|
|
const { id: fileId, streamId, branchName } = file
|
|
const branch = await deps.getStreamBranchByName(streamId, branchName)
|
|
|
|
if (!branch) {
|
|
await deps.publish(FileImportSubscriptions.ProjectPendingModelsUpdated, {
|
|
projectPendingModelsUpdated: {
|
|
id: fileId,
|
|
type: ProjectPendingModelsUpdatedMessageType.Updated,
|
|
model: file
|
|
},
|
|
projectId: streamId
|
|
})
|
|
} else {
|
|
await deps.publish(FileImportSubscriptions.ProjectPendingVersionsUpdated, {
|
|
projectPendingVersionsUpdated: {
|
|
id: fileId,
|
|
type: ProjectPendingVersionsUpdatedMessageType.Updated,
|
|
version: file
|
|
},
|
|
projectId: streamId,
|
|
branchName
|
|
})
|
|
}
|
|
|
|
await deps.publish(FileImportSubscriptions.ProjectFileImportUpdated, {
|
|
projectFileImportUpdated: {
|
|
id: fileId,
|
|
type: ProjectFileImportUpdatedMessageType.Created,
|
|
upload: file
|
|
},
|
|
projectId: streamId
|
|
})
|
|
}
|