You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

64 lines
2.5 KiB

from sqlalchemy import desc, delete, func, select, update
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.aichat_do import AiChatHistory
from module_admin.entity.do.aichat_do import AiChatSession
from module_admin.entity.vo.aichat_vo import AiChatModel
class AiChatDao:
"""
菜单管理模块数据库操作层
"""
@classmethod
async def get_ai_session_list(cls, db: AsyncSession, sessionId: str, user_id: int):
session_list = (
await db.execute(
select(AiChatSession).where(AiChatSession.user == user_id, AiChatSession.sessionId != sessionId)
.order_by(desc(AiChatSession.time)).limit(20)
)
).scalars().all()
return session_list
@classmethod
async def get_ai_chat_list(cls, db: AsyncSession, sessionId: str, user_id: int):
chat_list = (
await db.execute(
select(AiChatHistory).where(AiChatHistory.user == user_id, AiChatHistory.sessionId == sessionId)
.order_by(AiChatHistory.time)
)
).scalars().all()
return chat_list
@classmethod
async def get_ai_chat_by_id(cls, sessionId: str, db: AsyncSession, user_id: int):
chat_list = (await db.execute(select(AiChatSession)
.where(AiChatSession.user == user_id,
AiChatSession.sessionId == sessionId))).scalars().first()
return chat_list
@classmethod
async def add_ai_chat_session(cls, sessionId: str, sessionName: str, time: str, db: AsyncSession, user_id: int):
chat_session = AiChatSession()
chat_session.sessionId = sessionId
chat_session.sessionName = sessionName
chat_session.time = time
chat_session.user = user_id
db.add(chat_session)
db.flush()
return chat_session
@classmethod
async def add_ai_chat_history(cls, chat: AiChatHistory, db: AsyncSession):
db.add(chat)
db.flush()
return chat
@classmethod
async def delete_chat_session(cls, db: AsyncSession, sessionId: str, user_id: int):
await db.execute(delete(AiChatHistory).where(AiChatHistory.sessionId == sessionId))
await db.execute(delete(AiChatSession).where(AiChatSession.sessionId == sessionId))
@classmethod
async def update_ai_chat_history(cls, update_chat: AiChatModel, db: AsyncSession):
await db.execute(update(AiChatHistory), [dict(update_chat)])