in projects/deliberation_at_scale/packages/orchestrator/src/tasks/updateRoomProgression.ts [512:558]
async function handleProgressionTasks(options: ProgressionTasksContext): Promise<ProgressionTaskHandlerResult> {
const { roomId } = options;
const { hasErroredProgressionTasks, validProgressionTasks, erroredProgressionTasks } = await filterProgressionTasks(options);
if (hasErroredProgressionTasks) {
return Promise.reject(`Could not add progression task jobs for room ${roomId} because one of the verifications failed before executing the jobs. Failed verifications: ${JSON.stringify(erroredProgressionTasks)}`);
}
const [tasksResult, moderationsInsertResult] = await Promise.allSettled([
// ROOM_PROGRESSION_WITH_JOBS ?
// addProgressionTaskJobs({
// ...options,
// progressionTasks: validProgressionTasks,
// }) :
// executeProgressionTasks({
// ...options,
// progressionTasks: validProgressionTasks,
// }),
executeProgressionTasks({
...options,
progressionTasks: validProgressionTasks,
}),
supabaseClient.from("moderations").insert(validProgressionTasks.map((progressionTask) => {
const { id: progressionTaskId, workerTaskId } = progressionTask;
const jobKey = generateProgressionJobKey(roomId, progressionTaskId);
return {
type: progressionTaskId,
job_key: jobKey,
statement: `A room received a progression task with worker task ID: ${workerTaskId}.`,
target_type: 'room',
room_id: roomId,
} satisfies Database['public']['Tables']['moderations']['Insert'];
})),
]);
// guard: check if the results are valid
if (tasksResult.status === 'rejected') {
return Promise.reject(`Could not handle progression tasks for room ${roomId}: ${tasksResult.reason}`);
}
if (moderationsInsertResult.status === 'rejected') {
return Promise.reject(`Could not insert moderations when logging progression tasks for room ${roomId}: ${moderationsInsertResult.reason}`);
}
return tasksResult.value;
}