mirror of
https://wget.la/https://github.com/leookun/cursor-byok
synced 2026-08-18 20:19:18 +08:00
94 lines
2.9 KiB
SQL
94 lines
2.9 KiB
SQL
PRAGMA foreign_keys = ON;
|
|
|
|
CREATE TABLE IF NOT EXISTS conversations (
|
|
conversation_id TEXT PRIMARY KEY,
|
|
revision INTEGER NOT NULL DEFAULT 0,
|
|
head_blob_id BLOB,
|
|
updated_at_ms INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS messages (
|
|
conversation_id TEXT NOT NULL,
|
|
message_seq INTEGER NOT NULL,
|
|
message_id TEXT NOT NULL,
|
|
role TEXT NOT NULL,
|
|
origin TEXT NOT NULL,
|
|
payload_json TEXT NOT NULL,
|
|
runtime_event_id TEXT,
|
|
created_at_ms INTEGER NOT NULL,
|
|
PRIMARY KEY (conversation_id, message_seq),
|
|
UNIQUE (conversation_id, message_id),
|
|
UNIQUE (conversation_id, runtime_event_id),
|
|
FOREIGN KEY (conversation_id) REFERENCES conversations(conversation_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS messages_conversation_seq
|
|
ON messages(conversation_id, message_seq);
|
|
|
|
CREATE TABLE IF NOT EXISTS blobs (
|
|
blob_id BLOB PRIMARY KEY CHECK(length(blob_id) = 32),
|
|
data BLOB NOT NULL,
|
|
created_at_ms INTEGER NOT NULL,
|
|
CHECK(length(data) >= 0)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS blob_edges (
|
|
parent_blob_id BLOB NOT NULL,
|
|
child_blob_id BLOB NOT NULL,
|
|
field_name TEXT NOT NULL,
|
|
PRIMARY KEY (parent_blob_id, child_blob_id, field_name),
|
|
FOREIGN KEY (parent_blob_id) REFERENCES blobs(blob_id),
|
|
FOREIGN KEY (child_blob_id) REFERENCES blobs(blob_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS blob_edges_child ON blob_edges(child_blob_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS runs (
|
|
request_id TEXT PRIMARY KEY,
|
|
run_id TEXT,
|
|
conversation_id TEXT,
|
|
revision INTEGER,
|
|
append_seqno INTEGER NOT NULL DEFAULT -1,
|
|
status TEXT NOT NULL,
|
|
provider_call_index INTEGER NOT NULL DEFAULT 0,
|
|
turn_usage_json TEXT NOT NULL DEFAULT '{}',
|
|
created_at_ms INTEGER NOT NULL,
|
|
updated_at_ms INTEGER NOT NULL,
|
|
FOREIGN KEY (conversation_id) REFERENCES conversations(conversation_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS runs_conversation_status
|
|
ON runs(conversation_id, status);
|
|
|
|
CREATE TABLE IF NOT EXISTS run_tool_results (
|
|
request_id TEXT NOT NULL,
|
|
batch_index INTEGER NOT NULL,
|
|
call_index INTEGER NOT NULL,
|
|
completion_seq INTEGER NOT NULL,
|
|
call_id TEXT NOT NULL,
|
|
output_json TEXT NOT NULL,
|
|
is_error INTEGER NOT NULL,
|
|
completed_at_ms INTEGER NOT NULL,
|
|
PRIMARY KEY (request_id, batch_index, call_index),
|
|
UNIQUE (request_id, call_id),
|
|
FOREIGN KEY (request_id) REFERENCES runs(request_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS outbox (
|
|
outbox_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
request_id TEXT NOT NULL,
|
|
operation_key TEXT NOT NULL,
|
|
operation_kind TEXT NOT NULL,
|
|
payload BLOB NOT NULL,
|
|
dependency_blob_ids_json TEXT NOT NULL DEFAULT '[]',
|
|
attempts INTEGER NOT NULL DEFAULT 0,
|
|
acked_at_ms INTEGER,
|
|
created_at_ms INTEGER NOT NULL,
|
|
updated_at_ms INTEGER NOT NULL,
|
|
UNIQUE(request_id, operation_key),
|
|
FOREIGN KEY (request_id) REFERENCES runs(request_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS outbox_pending
|
|
ON outbox(request_id, acked_at_ms, outbox_id);
|