import sqlite3 import os from typing import List from model import SessionMessageResponse def init_db(): conn = sqlite3.connect(os.getenv("SQLITE_DB_PATH")) # 业务表:会话 conn.execute(""" CREATE TABLE IF NOT EXISTS session ( id INTEGER PRIMARY KEY AUTOINCREMENT, thread_id TEXT NOT NULL UNIQUE, username TEXT NOT NULL, title TEXT NOT NULL, created_time DATETIME DEFAULT CURRENT_TIMESTAMP ); """) conn.commit() conn.close() def query_session_messages(username: str) -> List[SessionMessageResponse]: conn = sqlite3.connect(os.getenv("SQLITE_DB_PATH")) conn.row_factory = sqlite3.Row cursor = conn.cursor() cursor.execute( """ SELECT username, title, thread_id FROM session WHERE username = ? ORDER BY created_time DESC """, (username,) ) rows = cursor.fetchall() conn.close() return [ SessionMessageResponse( username=row["username"], title=row["title"], thread_id=row["thread_id"], ) for row in rows ] def exists_session(thread_id: str, username: str) -> bool: conn = sqlite3.connect(os.getenv("SQLITE_DB_PATH")) cursor = conn.cursor() cursor.execute( """ SELECT 1 FROM session WHERE thread_id = ? AND username = ? LIMIT 1 """, (thread_id, username) ) result = cursor.fetchone() conn.close() return result is not None def save_session(thread_id: str, username: str, title: str): conn = sqlite3.connect(os.getenv("SQLITE_DB_PATH")) conn.execute( """ INSERT OR REPLACE INTO session (thread_id, username, title) VALUES (?, ?, ?) """, (thread_id, username, title) ) conn.commit() conn.close()