mirror of
https://github.com/BaaRai/ARTEX.git
synced 2026-11-15 04:30:55 +08:00
Move the llm_records and llm_usage DDL out of Go constants into embedded files db/migrations/0001_llm_records.sql and 0002_llm_usage.sql (byte-for-byte the old constants). Open now applies pending migrations after schema.sql and before seedBuiltins, under the existing schema advisory lock and on the lock-holding connection. Each migration runs in its own transaction with its schema_migrations row (version, name, SHA-256 checksum, applied_at). Open fails closed when the database has a version missing from the binary, or an applied migration whose file name or checksum changed. A failing migration is rolled back and blocks startup; earlier ones stay applied. EnsureLLMRecordsTable and EnsureLLMUsageTable re-run the embedded files and keep their transaction-level schema lock; Open never calls them.
30 lines
1003 B
SQL
30 lines
1003 B
SQL
|
|
CREATE TABLE IF NOT EXISTS llm_records (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
ts TIMESTAMPTZ DEFAULT now(),
|
|
model TEXT,
|
|
profile_name TEXT,
|
|
session_id TEXT,
|
|
task_id TEXT,
|
|
worker TEXT,
|
|
latency_ms INTEGER,
|
|
input_tokens INTEGER,
|
|
output_tokens INTEGER,
|
|
cache_read INTEGER,
|
|
cache_write INTEGER,
|
|
status TEXT,
|
|
error TEXT,
|
|
request_body TEXT,
|
|
response_body TEXT,
|
|
raw_request TEXT,
|
|
raw_response TEXT
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_llm_records_ts ON llm_records(ts);
|
|
CREATE INDEX IF NOT EXISTS idx_llm_records_session ON llm_records(session_id);
|
|
|
|
ALTER TABLE llm_records ADD COLUMN IF NOT EXISTS task_id TEXT;
|
|
ALTER TABLE llm_records ADD COLUMN IF NOT EXISTS worker TEXT;
|
|
ALTER TABLE llm_records ADD COLUMN IF NOT EXISTS profile_name TEXT;
|
|
ALTER TABLE llm_records ADD COLUMN IF NOT EXISTS raw_request TEXT;
|
|
ALTER TABLE llm_records ADD COLUMN IF NOT EXISTS raw_response TEXT;
|