Files
speckle-server/packages/server/modules/backgroundjobs/services/create.ts
T
Daniel Gak Anagrov 4e62c78b15 fix: added in progress to ifc importer service (#5172)
* fix: added in progress to ifc importer service
* feat: improved background job handling
2025-07-31 17:11:00 +02:00

35 lines
908 B
TypeScript

import type {
BackgroundJob,
BackgroundJobConfig,
BackgroundJobPayload,
StoreBackgroundJob
} from '@/modules/backgroundjobs/domain'
import { BackgroundJobStatus } from '@/modules/backgroundjobs/domain'
import cryptoRandomString from 'crypto-random-string'
export const createBackgroundJobFactory = <T extends BackgroundJobPayload>({
storeBackgroundJob,
jobConfig
}: {
storeBackgroundJob: StoreBackgroundJob
jobConfig: BackgroundJobConfig
}) => {
return async ({ jobPayload }: { jobPayload: T }): Promise<BackgroundJob<T>> => {
const jobId = cryptoRandomString({ length: 10 })
const job = {
...jobConfig,
attempt: 0,
createdAt: new Date(),
updatedAt: new Date(),
id: jobId,
jobType: jobPayload.jobType,
payload: jobPayload,
status: BackgroundJobStatus.Queued
}
await storeBackgroundJob({
job
})
return job
}
}