feat(mcp): queue long-running calculations
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
-- Apply independently to each project's business database.
|
||||
CREATE SCHEMA IF NOT EXISTS workbench;
|
||||
CREATE TABLE IF NOT EXISTS workbench.calculation_jobs (
|
||||
job_id uuid PRIMARY KEY,
|
||||
project_id uuid NOT NULL,
|
||||
owner_user_id uuid NOT NULL,
|
||||
request_key text NOT NULL,
|
||||
tool text NOT NULL,
|
||||
parameters jsonb NOT NULL,
|
||||
binding jsonb NOT NULL,
|
||||
timeout_seconds integer NOT NULL CHECK (timeout_seconds BETWEEN 1 AND 86400),
|
||||
status text NOT NULL DEFAULT 'queued' CHECK (status IN
|
||||
('queued','running','cancel_requested','succeeded','failed','cancelled','timed_out','interrupted')),
|
||||
result jsonb,
|
||||
error jsonb,
|
||||
lease_generation bigint NOT NULL DEFAULT 0,
|
||||
lease_owner text,
|
||||
lease_expires_at timestamptz,
|
||||
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
||||
updated_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
||||
UNIQUE(project_id,owner_user_id,request_key)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS calculation_jobs_queue ON workbench.calculation_jobs(project_id,status,created_at);
|
||||
Reference in New Issue
Block a user