import json from typing import List import sqlalchemy from sqlalchemy import text from sqlalchemy.orm import Session def insert_chat_history(conn: sqlalchemy.engine.Connection, query: str, answer: str): with Session(conn) as conn: conn.execute( text("INSERT INTO chat_history (query, answer) VALUES (:query, :answer);"), [ { "query": query, "answer": answer, } ], ) conn.commit() result = conn.execute( text("SELECT id FROM chat_history ORDER BY id DESC LIMIT 1;") ) last_row_id = result.fetchone()[0] conn.commit() return last_row_id def insert_chat_history_articles( conn: sqlalchemy.engine.Connection, chat_history_id: int, articles: List[str] ): with Session(conn) as conn: conn.execute( text( """ INSERT INTO chat_history_articles (chat_history_id, article_id) VALUES (:chat_history_id, :article_id) ON CONFLICT DO NOTHING; """ ), [ { "chat_history_id": chat_history_id, "article_id": article.metadata["id"], } for article in articles ], ) conn.commit()