Files
speckle-server/packages/server/modules/fileuploads/services/createFileImport.ts
T
Kristaps Fabians Geikins 4b06f42db7 chore(server): run TS files directly (no compilation) (#5134)
* sort of works

* type fixes

* added option to run old way too
2025-07-23 11:20:40 +02:00

56 lines
1.7 KiB
TypeScript

import type { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations'
import { DefaultAppIds } from '@/modules/auth/defaultApps'
import { Scopes, TIME, TIME_MS } from '@speckle/shared'
import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql'
import type { PushJobToFileImporter } from '@/modules/fileuploads/domain/operations'
import { getFileImportTimeLimitMinutes } from '@/modules/shared/helpers/envHelper'
import {
DelayBetweenFileImportRetriesMinutes,
NumberOfFileImportRetries
} from '@/modules/fileuploads/domain/consts'
export const pushJobToFileImporterFactory =
(deps: {
createAppToken: CreateAndStoreAppToken
getServerOrigin: () => string
}): PushJobToFileImporter =>
async ({
scheduleJob,
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, Scopes.Profile.Read],
lifespan:
NumberOfFileImportRetries *
(getFileImportTimeLimitMinutes() + DelayBetweenFileImportRetriesMinutes + 1) *
TIME_MS.minute, // allowing an extra minute for some buffer
limitResources: [
{
id: projectId,
type: TokenResourceIdentifierType.Project
}
]
})
await scheduleJob({
jobId,
fileName,
token,
serverUrl: deps.getServerOrigin(),
modelId,
fileType,
projectId,
timeOutSeconds: getFileImportTimeLimitMinutes() * TIME.minute,
blobId
})
}