Files
go-sip/internal/store/migrations/015_local_v02_task_discovery.sql
T

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