Create persistent GUI chat history tables.
(cursor: sqlite3.Cursor)
| 141 | |
| 142 | |
| 143 | def _create_chat_tables(cursor: sqlite3.Cursor) -> None: |
| 144 | """Create persistent GUI chat history tables.""" |
| 145 | cursor.execute(""" |
| 146 | CREATE TABLE IF NOT EXISTS chat_sessions ( |
| 147 | id INTEGER PRIMARY KEY AUTOINCREMENT, |
| 148 | session_id TEXT UNIQUE NOT NULL, |
| 149 | user_id TEXT NOT NULL, |
| 150 | title TEXT NOT NULL, |
| 151 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 152 | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 153 | message_count INTEGER DEFAULT 0 |
| 154 | ) |
| 155 | """) |
| 156 | cursor.execute(""" |
| 157 | CREATE TABLE IF NOT EXISTS chat_messages ( |
| 158 | id INTEGER PRIMARY KEY AUTOINCREMENT, |
| 159 | session_id TEXT NOT NULL, |
| 160 | user_id TEXT NOT NULL, |
| 161 | role TEXT NOT NULL, |
| 162 | content TEXT NOT NULL, |
| 163 | metadata TEXT, |
| 164 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 165 | FOREIGN KEY (session_id) REFERENCES chat_sessions(session_id) |
| 166 | ) |
| 167 | """) |
| 168 | cursor.execute("CREATE INDEX IF NOT EXISTS idx_chat_sessions_user_updated ON chat_sessions(user_id, updated_at)") |
| 169 | cursor.execute("CREATE INDEX IF NOT EXISTS idx_chat_messages_session_id ON chat_messages(session_id, id)") |
| 170 | |
| 171 | |
| 172 | def init_db() -> None: |
no test coverage detected