40 lines
1.6 KiB
SQL
40 lines
1.6 KiB
SQL
-- Old paginated cursors cannot authorize the single-response discovery contract.
|
|
-- Keep task assignments and execution recovery; require a fresh snapshot.
|
|
DROP TABLE IF EXISTS local_v01_task_discovery_pages;
|
|
DROP TABLE IF EXISTS local_v01_task_discovery_state;
|
|
|
|
CREATE TABLE IF NOT EXISTS local_v02_task_discovery_state (
|
|
dispatcher_id TEXT PRIMARY KEY,
|
|
cursor TEXT NOT NULL,
|
|
last_mode TEXT NOT NULL CHECK (last_mode IN ('snapshot', 'changes')),
|
|
ready INTEGER NOT NULL CHECK (ready IN (0, 1)),
|
|
updated_at TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS local_v02_task_discovery_response (
|
|
dispatcher_id TEXT PRIMARY KEY,
|
|
content_sha256 TEXT NOT NULL CHECK (length(content_sha256) = 64),
|
|
body BLOB NOT NULL,
|
|
stored_at TEXT NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS local_v01_task_assignments (
|
|
dispatcher_id TEXT NOT NULL,
|
|
task_id TEXT NOT NULL,
|
|
tenant_id TEXT NOT NULL,
|
|
tenant_key TEXT NOT NULL,
|
|
task_revision INTEGER NOT NULL CHECK (task_revision >= 0),
|
|
saas_status TEXT NOT NULL CHECK (saas_status IN ('running', 'paused', 'stopped', 'finished', 'removed')),
|
|
admission_state TEXT NOT NULL CHECK (admission_state IN ('running', 'paused', 'stopped', 'finished', 'removed')),
|
|
removed INTEGER NOT NULL DEFAULT 0 CHECK (removed IN (0, 1)),
|
|
queue_exchange TEXT NOT NULL,
|
|
routing_key TEXT NOT NULL,
|
|
binding_key TEXT NOT NULL,
|
|
queue_name TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL,
|
|
PRIMARY KEY (dispatcher_id, task_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS local_v01_task_assignments_admission
|
|
ON local_v01_task_assignments(dispatcher_id, removed, admission_state);
|