Files
chief-agent/services/db_service.py

86 lines
1.8 KiB
Python

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