apps/gateway/src/workers/job-processor.ts
Metadata
- Purpose: Background worker process for queued asynchronous operations.
- Domain:
applications - Language:
ts - Bytes: 3724
- Lines: 134
- Content hash (short):
b4d11433 - Source (start): apps/gateway/src/workers/job-processor.ts:1
- Source (end): apps/gateway/src/workers/job-processor.ts:134
Indexed Symbols
sleep(line 8, function) - Implements sleep for background job processing.readPayload(line 12, function) - Implements read payload for background job processing.processImportJob(line 16, function) - Implements process import job for background job processing.processExportJob(line 50, function) - Implements process export job for background job processing.processJob(line 72, function) - Implements process job for background job processing.run(line 106, function) - Implements run for background job processing.
Markdown Headings (if applicable)
No markdown headings detected.
Source Preview
import { randomUUID } from "node:crypto";
import { coreResourceSchemas } from "@anchor/contracts";
import { env } from "../config/env.js";
import { createResource } from "../services/resource-repository.js";
import { markBackgroundJobStatus, reserveQueuedJobs, type BackgroundJob } from "../services/job-repository.js";
import { heartbeatWorker } from "../services/worker-runtime-repository.js";
function sleep(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function readPayload(job: BackgroundJob): Record<string, unknown> {
return (job.payload ?? {}) as Record<string, unknown>;
}
async function processImportJob(job: BackgroundJob): Promise<void> {
const payload = readPayload(job);
const candidateResourceType = typeof payload.resourceType === "string" ? payload.resourceType : "Ticket";
const resourceType = candidateResourceType in coreResourceSchemas ? candidateResourceType : "Ticket";
const data = (typeof payload.data === "object" && payload.data ? payload.data : {}) as Record<string, unknown>;
const id = typeof data.id === "string" ? data.id : randomUUID();
const now = new Date().toISOString();
await createResource(resourceType, job.workspaceId, id, {