-- 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);