37 lines
1.2 KiB
SQL
37 lines
1.2 KiB
SQL
-- sessions table stores high-level chat session metadata.
|
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
model_name TEXT NOT NULL,
|
|
summary TEXT
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);
|
|
|
|
-- messages table stores individual conversation messages linked to sessions.
|
|
CREATE TABLE IF NOT EXISTS messages (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
session_id INTEGER NOT NULL,
|
|
role TEXT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
token_count INTEGER,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY(session_id) REFERENCES sessions(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_messages_session_created_at ON messages(session_id, created_at);
|
|
|
|
-- models table tracks available models and usage metadata.
|
|
CREATE TABLE IF NOT EXISTS models (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
display_name TEXT,
|
|
provider TEXT,
|
|
is_default BOOLEAN NOT NULL DEFAULT 0,
|
|
last_used_at DATETIME
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_models_name ON models(name);
|