* Rename tables, add graphile workers, update types * Add dev:worker command * Update pnpm-lock.yaml * Remove sentry config import from worker.ts * Stop generating new cells in cell router get query * Generate new cells for new scenarios, variants, and experiments * Remove most error throwing from queryLLM.task.ts * Remove promptVariantId and testScenarioId from ModelOutput * Remove duplicate index from ModelOutput * Move inputHash from cell to output * Add TODO * Add todo * Show cost and time for each cell * Always show output stats if there is output * Trigger LLM outputs when scenario variables are updated * Add newlines to ends of files * Add another newline * Cascade ModelOutput deletion * Fix linting and prettier * Return instead of throwing for non-pending cell * Remove pnpm dev:worker from pnpm:dev * Update pnpm-lock.yaml
32 lines
871 B
TypeScript
32 lines
871 B
TypeScript
// Import necessary dependencies
|
|
import { quickAddJob, type Helpers, type Task } from "graphile-worker";
|
|
import { env } from "~/env.mjs";
|
|
|
|
// Define the defineTask function
|
|
function defineTask<TPayload>(
|
|
taskIdentifier: string,
|
|
taskHandler: (payload: TPayload, helpers: Helpers) => Promise<void>,
|
|
) {
|
|
const enqueue = async (payload: TPayload) => {
|
|
console.log("Enqueuing task", taskIdentifier, payload);
|
|
await quickAddJob({ connectionString: env.DATABASE_URL }, taskIdentifier, payload);
|
|
};
|
|
|
|
const handler = (payload: TPayload, helpers: Helpers) => {
|
|
helpers.logger.info(`Running task ${taskIdentifier} with payload: ${JSON.stringify(payload)}`);
|
|
return taskHandler(payload, helpers);
|
|
};
|
|
|
|
const task = {
|
|
identifier: taskIdentifier,
|
|
handler: handler as Task,
|
|
};
|
|
|
|
return {
|
|
enqueue,
|
|
task,
|
|
};
|
|
}
|
|
|
|
export default defineTask;
|