Initial codex telegram bot source
This commit is contained in:
94
internal/store/migrations.go
Normal file
94
internal/store/migrations.go
Normal file
@@ -0,0 +1,94 @@
|
||||
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;
|
||||
`,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user