core/apps/webapp/app/trigger/spaces/space-assignment.ts
2025-10-28 23:42:34 +05:30

45 lines
1.3 KiB
TypeScript

import { queue, task } from "@trigger.dev/sdk/v3";
import { logger } from "~/services/logger.service";
import {
processSpaceAssignment,
type SpaceAssignmentPayload,
} from "~/jobs/spaces/space-assignment.logic";
import { triggerSpaceSummary } from "./space-summary";
export type { SpaceAssignmentPayload };
const spaceAssignmentQueue = queue({
name: "space-assignment-queue",
concurrencyLimit: 1,
});
export const spaceAssignmentTask = task({
id: "space-assignment",
queue: spaceAssignmentQueue,
maxDuration: 1800, // 15 minutes timeout
run: async (payload: SpaceAssignmentPayload) => {
logger.info(`[Trigger.dev] Starting space assignment task`, {
userId: payload.userId,
mode: payload.mode,
});
// Use common business logic with callback for triggering space summaries
return await processSpaceAssignment(
payload,
// Callback to enqueue space summary
async (summaryPayload) => {
return await triggerSpaceSummary(summaryPayload);
},
);
},
});
// Helper function to trigger the task
export async function triggerSpaceAssignment(payload: SpaceAssignmentPayload) {
return await spaceAssignmentTask.trigger(payload, {
queue: "space-assignment-queue",
concurrencyKey: payload.userId,
tags: [payload.userId],
});
}