POST /v1/3d/generations answers 202 with a job; GET says its status, progress and result file; cancel stops it in the engine's queue too. The request is kept as sent and replayed by whichever gateway holds the lease through the path a client's request takes, so it is charged and judged like any request (tagged job=<id>), and a model still loading is waited out for as long as the job has. Migration 0044. Nothing makes 3D models yet; the door refuses every model until the ComfyUI adapter learns meshes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
34 lines
1.5 KiB
SQL
34 lines
1.5 KiB
SQL
-- Jobs (BACKLOG G1): a request that takes minutes — a 3D model from a
|
|
-- picture — answered with an id and asked after, rather than held open.
|
|
-- The request is kept as it was sent, so whichever gateway holds the lease
|
|
-- replays it through the same path a client's request takes; the result is
|
|
-- a file in the files table, kept for the batch files' retention.
|
|
CREATE TABLE jobs (
|
|
id TEXT PRIMARY KEY,
|
|
owner TEXT NOT NULL,
|
|
key_id TEXT NOT NULL,
|
|
endpoint TEXT NOT NULL,
|
|
model TEXT NOT NULL,
|
|
input BLOB NOT NULL,
|
|
-- status is queued, running, completed, failed, cancelling, cancelled or
|
|
-- expired.
|
|
status TEXT NOT NULL,
|
|
-- progress is what the engine said of the work so far, as JSON: queue
|
|
-- position, percent, step. Empty until it says anything.
|
|
progress TEXT NOT NULL DEFAULT '',
|
|
-- prompt_id is the engine's own id for the work (ComfyUI's prompt_id),
|
|
-- so a gateway that takes over a running job asks after the same work.
|
|
prompt_id TEXT NOT NULL DEFAULT '',
|
|
output_file_id TEXT NOT NULL DEFAULT '',
|
|
content_type TEXT NOT NULL DEFAULT '',
|
|
error TEXT NOT NULL DEFAULT '',
|
|
created_at INTEGER NOT NULL,
|
|
started_at INTEGER NOT NULL DEFAULT 0,
|
|
finished_at INTEGER NOT NULL DEFAULT 0,
|
|
expires_at INTEGER NOT NULL,
|
|
lease_owner TEXT NOT NULL DEFAULT '',
|
|
lease_until INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX jobs_owner ON jobs (owner, created_at);
|
|
CREATE INDEX jobs_status ON jobs (status, lease_until);
|