40 lines
1.3 KiB
Plaintext
40 lines
1.3 KiB
Plaintext
def _escape(value):
|
|
if value is None:
|
|
return None
|
|
return str(value).replace("'", "''")
|
|
|
|
|
|
async def chat_session_delete(ns={}):
|
|
"""删除会话及其全部消息"""
|
|
session_id = ns.get('session_id')
|
|
if not session_id:
|
|
return {'status': False, 'msg': 'session_id is required'}
|
|
|
|
userid = ns.get('userid') or await get_user()
|
|
if not userid:
|
|
return {'status': False, 'msg': '未找到用户'}
|
|
|
|
db = DBPools()
|
|
async with db.sqlorContext('kboss') as sor:
|
|
try:
|
|
sessions = await sor.R('chat_session', {'id': session_id, 'userid': userid})
|
|
if not sessions:
|
|
return {'status': False, 'msg': '会话不存在'}
|
|
|
|
await sor.sqlExe(
|
|
"DELETE FROM chat_message WHERE session_id = '%s';" % _escape(session_id),
|
|
{},
|
|
)
|
|
await sor.sqlExe(
|
|
"DELETE FROM chat_session WHERE id = '%s' AND userid = '%s';"
|
|
% (_escape(session_id), _escape(userid)),
|
|
{},
|
|
)
|
|
return {'status': True, 'msg': 'delete success'}
|
|
except Exception as e:
|
|
return {'status': False, 'msg': 'delete failed, %s' % str(e)}
|
|
|
|
|
|
ret = await chat_session_delete(params_kw)
|
|
return ret
|