async function handleProgressionTasks()

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;
}