95 lines
2.8 KiB
Go
95 lines
2.8 KiB
Go
package store
|
|
|
|
type migration struct {
|
|
Name string
|
|
SQL string
|
|
}
|
|
|
|
var migrations = []migration{
|
|
{
|
|
Name: "initial_state",
|
|
SQL: `
|
|
CREATE TABLE allowed_users (
|
|
telegram_user_id INTEGER PRIMARY KEY,
|
|
username TEXT NOT NULL DEFAULT '',
|
|
notes TEXT NOT NULL DEFAULT '',
|
|
added_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE workspaces (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
path TEXT NOT NULL UNIQUE,
|
|
label TEXT NOT NULL,
|
|
is_default INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE sessions (
|
|
telegram_user_id INTEGER PRIMARY KEY,
|
|
active_thread_id INTEGER,
|
|
active_workspace_id INTEGER,
|
|
model TEXT NOT NULL DEFAULT '',
|
|
sandbox TEXT NOT NULL DEFAULT 'workspace-write',
|
|
active_turn_id TEXT NOT NULL DEFAULT '',
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY(active_thread_id) REFERENCES threads(id) ON DELETE SET NULL,
|
|
FOREIGN KEY(active_workspace_id) REFERENCES workspaces(id) ON DELETE SET NULL
|
|
);
|
|
|
|
CREATE TABLE threads (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
telegram_user_id INTEGER NOT NULL,
|
|
codex_thread_id TEXT NOT NULL UNIQUE,
|
|
workspace_id INTEGER NOT NULL,
|
|
title TEXT NOT NULL DEFAULT '',
|
|
archived INTEGER NOT NULL DEFAULT 0,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
FOREIGN KEY(workspace_id) REFERENCES workspaces(id) ON DELETE RESTRICT
|
|
);
|
|
|
|
CREATE INDEX idx_threads_user_updated ON threads(telegram_user_id, archived, updated_at DESC);
|
|
|
|
CREATE TABLE pending_approvals (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
telegram_user_id INTEGER NOT NULL,
|
|
codex_request_id TEXT NOT NULL,
|
|
codex_thread_id TEXT NOT NULL,
|
|
turn_id TEXT NOT NULL DEFAULT '',
|
|
item_id TEXT NOT NULL DEFAULT '',
|
|
kind TEXT NOT NULL,
|
|
payload_json TEXT NOT NULL,
|
|
message_chat_id INTEGER NOT NULL DEFAULT 0,
|
|
message_id INTEGER NOT NULL DEFAULT 0,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
resolved_at TEXT NOT NULL DEFAULT '',
|
|
UNIQUE(telegram_user_id, codex_request_id)
|
|
);
|
|
|
|
CREATE INDEX idx_pending_approvals_status ON pending_approvals(telegram_user_id, status);
|
|
|
|
CREATE TABLE audit_log (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
telegram_user_id INTEGER NOT NULL DEFAULT 0,
|
|
action TEXT NOT NULL,
|
|
details TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE INDEX idx_audit_user_created ON audit_log(telegram_user_id, created_at DESC);
|
|
`,
|
|
},
|
|
{
|
|
Name: "session_reasoning_effort",
|
|
SQL: "ALTER TABLE sessions ADD COLUMN reasoning_effort TEXT NOT NULL DEFAULT ''",
|
|
},
|
|
{
|
|
Name: "session_settings_message",
|
|
SQL: `
|
|
ALTER TABLE sessions ADD COLUMN settings_chat_id INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE sessions ADD COLUMN settings_message_id INTEGER NOT NULL DEFAULT 0;
|
|
`,
|
|
},
|
|
}
|