| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- -- Sessions
- CREATE TABLE IF NOT EXISTS sessions (
- id TEXT PRIMARY KEY,
- parent_session_id TEXT,
- title TEXT NOT NULL,
- message_count INTEGER NOT NULL DEFAULT 0 CHECK (message_count >= 0),
- prompt_tokens INTEGER NOT NULL DEFAULT 0 CHECK (prompt_tokens >= 0),
- completion_tokens INTEGER NOT NULL DEFAULT 0 CHECK (completion_tokens>= 0),
- cost REAL NOT NULL DEFAULT 0.0 CHECK (cost >= 0.0),
- updated_at INTEGER NOT NULL, -- Unix timestamp in milliseconds
- created_at INTEGER NOT NULL -- Unix timestamp in milliseconds
- );
- CREATE TRIGGER IF NOT EXISTS update_sessions_updated_at
- AFTER UPDATE ON sessions
- BEGIN
- UPDATE sessions SET updated_at = strftime('%s', 'now')
- WHERE id = new.id;
- END;
- -- Messages
- CREATE TABLE IF NOT EXISTS messages (
- id TEXT PRIMARY KEY,
- session_id TEXT NOT NULL,
- role TEXT NOT NULL,
- parts TEXT NOT NULL default '[]',
- created_at INTEGER NOT NULL, -- Unix timestamp in milliseconds
- updated_at INTEGER NOT NULL, -- Unix timestamp in milliseconds
- FOREIGN KEY (session_id) REFERENCES sessions (id) ON DELETE CASCADE
- );
- CREATE INDEX IF NOT EXISTS idx_messages_session_id ON messages (session_id);
- CREATE TRIGGER IF NOT EXISTS update_messages_updated_at
- AFTER UPDATE ON messages
- BEGIN
- UPDATE messages SET updated_at = strftime('%s', 'now')
- WHERE id = new.id;
- END;
- CREATE TRIGGER IF NOT EXISTS update_session_message_count_on_insert
- AFTER INSERT ON messages
- BEGIN
- UPDATE sessions SET
- message_count = message_count + 1
- WHERE id = new.session_id;
- END;
- CREATE TRIGGER IF NOT EXISTS update_session_message_count_on_delete
- AFTER DELETE ON messages
- BEGIN
- UPDATE sessions SET
- message_count = message_count - 1
- WHERE id = old.session_id;
- END;
|