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] ): source_documents = [json.loads(article.page_content) for article in articles] 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["id"], } for article in source_documents ], ) conn.commit()