Files
speckle-server/packages/server/modules/fileuploads/services/createFileImport.ts
T
Gergő Jedlicska 2e86a723c6 feat(fileimport-service): add next gen file importer (#4697)
* 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
2025-05-23 10:27:00 +02:00

53 lines
1.3 KiB
TypeScript

import { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations'
import { DefaultAppIds } from '@/modules/auth/defaultApps'
import { Scopes, TIME, TIME_MS } from '@speckle/shared'
import { TokenResourceIdentifierType } from '@/test/graphql/generated/graphql'
import {
PushJobToFileImporter,
ScheduleFileimportJob
} from '@/modules/fileuploads/domain/operations'
const twentyMinutes = 20 * TIME.minute
export const pushJobToFileImporterFactory =
(deps: {
createAppToken: CreateAndStoreAppToken
getServerOrigin: () => string
scheduleJob: ScheduleFileimportJob
}): PushJobToFileImporter =>
async ({
modelId,
projectId,
userId,
fileName,
fileType,
blobId,
jobId
}): Promise<void> => {
const token = await deps.createAppToken({
appId: DefaultAppIds.Web,
name: `fileimport-${projectId}@${modelId}`,
userId,
scopes: [Scopes.Streams.Write, Scopes.Streams.Read],
lifespan: 2 * TIME_MS.hour,
limitResources: [
{
id: projectId,
type: TokenResourceIdentifierType.Project
}
]
})
await deps.scheduleJob({
jobId,
fileName,
token,
serverUrl: deps.getServerOrigin(),
modelId,
fileType,
projectId,
timeOutSeconds: twentyMinutes,
blobId
})
}