Spaces:
Running
Running
File size: 2,811 Bytes
c7d34c1 11486ce | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | CREATE TABLE IF NOT EXISTS state_schema_migrations (
id TEXT PRIMARY KEY,
checksum TEXT NOT NULL,
applied_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS agent_requests (
request_id TEXT PRIMARY KEY,
idempotency_key TEXT NOT NULL UNIQUE,
request_hash TEXT NOT NULL,
mode TEXT NOT NULL CHECK (mode IN ('generate', 'edit')),
status TEXT NOT NULL CHECK (status IN ('pending', 'running', 'succeeded', 'failed', 'orphaned')),
request_json TEXT NOT NULL,
response_json TEXT,
error_json TEXT,
locked_until TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
expires_at TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_agent_requests_status_locked_until ON agent_requests(status, locked_until);
CREATE INDEX IF NOT EXISTS idx_agent_requests_expires_at ON agent_requests(expires_at);
CREATE TABLE IF NOT EXISTS agent_artifacts (
id TEXT PRIMARY KEY,
request_id TEXT NOT NULL,
filename TEXT NOT NULL UNIQUE,
filepath TEXT NOT NULL,
content_url TEXT NOT NULL,
metadata_url TEXT NOT NULL,
output_format TEXT NOT NULL,
mime_type TEXT NOT NULL,
size_bytes INTEGER NOT NULL,
width INTEGER,
height INTEGER,
model TEXT NOT NULL,
prompt_hash TEXT NOT NULL,
created_at TEXT NOT NULL,
FOREIGN KEY(request_id) REFERENCES agent_requests(request_id)
);
CREATE INDEX IF NOT EXISTS idx_agent_artifacts_request_id ON agent_artifacts(request_id);
CREATE TABLE IF NOT EXISTS agent_recovery_events (
id TEXT PRIMARY KEY,
event_type TEXT NOT NULL,
details_json TEXT NOT NULL,
created_at TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS image_shares (
token TEXT PRIMARY KEY,
source_filename TEXT NOT NULL,
content_filename TEXT NOT NULL UNIQUE,
mime_type TEXT NOT NULL,
size_bytes INTEGER NOT NULL,
created_at TEXT NOT NULL,
access_code_required INTEGER NOT NULL CHECK (access_code_required IN (0, 1)),
expires_at TEXT,
access_code_salt TEXT,
access_code_hash TEXT,
CHECK (
(access_code_required = 0 AND access_code_salt IS NULL AND access_code_hash IS NULL)
OR (access_code_required = 1 AND access_code_salt IS NOT NULL AND access_code_hash IS NOT NULL)
)
);
CREATE INDEX IF NOT EXISTS idx_image_shares_expires_at ON image_shares(expires_at);
CREATE TABLE IF NOT EXISTS result_feedback (
target_type TEXT NOT NULL CHECK (target_type IN ('page_request', 'agent_request', 'agent_artifact')),
target_id TEXT NOT NULL,
value TEXT NOT NULL CHECK (value IN ('usable', 'needs_revision')),
note TEXT,
source TEXT NOT NULL CHECK (source IN ('webui', 'agent')),
updated_at TEXT NOT NULL,
PRIMARY KEY (target_type, target_id)
);
CREATE INDEX IF NOT EXISTS idx_result_feedback_updated_at ON result_feedback(updated_at);
|