增加了session会话的查询和删除功能
This commit is contained in:
parent
c6e88c5c7a
commit
7d671048b9
@ -954,6 +954,32 @@ class DatabaseManager:
|
|||||||
logger.error(f'获取会话总数失败: {e}')
|
logger.error(f'获取会话总数失败: {e}')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def delete_detection_session(self, session_id: str):
|
||||||
|
"""删除检测会话及其相关的检测数据"""
|
||||||
|
conn = self.get_connection()
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 验证会话是否存在
|
||||||
|
cursor.execute('SELECT COUNT(*) FROM detection_sessions WHERE id = ?', (session_id,))
|
||||||
|
if cursor.fetchone()[0] == 0:
|
||||||
|
raise ValueError(f'检测会话不存在: {session_id}')
|
||||||
|
|
||||||
|
# 先删除相关的检测数据
|
||||||
|
cursor.execute('DELETE FROM detection_data WHERE session_id = ?', (session_id,))
|
||||||
|
deleted_data_count = cursor.rowcount
|
||||||
|
|
||||||
|
# 再删除检测会话
|
||||||
|
cursor.execute('DELETE FROM detection_sessions WHERE id = ?', (session_id,))
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
logger.info(f'删除检测会话: {session_id}, 同时删除了 {deleted_data_count} 条检测数据')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
conn.rollback()
|
||||||
|
logger.error(f'删除检测会话失败: {e}')
|
||||||
|
raise
|
||||||
|
|
||||||
def get_session_data(self, session_id: str) -> Optional[Dict]:
|
def get_session_data(self, session_id: str) -> Optional[Dict]:
|
||||||
"""获取会话详细数据"""
|
"""获取会话详细数据"""
|
||||||
conn = self.get_connection()
|
conn = self.get_connection()
|
||||||
|
@ -1212,11 +1212,20 @@ class AppServer:
|
|||||||
try:
|
try:
|
||||||
page = int(flask_request.args.get('page', 1))
|
page = int(flask_request.args.get('page', 1))
|
||||||
size = int(flask_request.args.get('size', 10))
|
size = int(flask_request.args.get('size', 10))
|
||||||
patient_id = flask_request.args.get('patient_id')
|
patient_id = flask_request.args.get('patient_id')
|
||||||
|
|
||||||
sessions = self.db_manager.get_detection_sessions(page, size, patient_id)
|
sessions = self.db_manager.get_detection_sessions(page, size, patient_id)
|
||||||
total = self.db_manager.get_sessions_count(patient_id)
|
total = self.db_manager.get_sessions_count(patient_id)
|
||||||
|
|
||||||
|
# 为每个会话补充最新的检测数据
|
||||||
|
for session in sessions:
|
||||||
|
session_id = session.get('id')
|
||||||
|
if session_id:
|
||||||
|
latest_data = self.db_manager.get_latest_detection_data(session_id, 5)
|
||||||
|
session['latest_detection_data'] = latest_data
|
||||||
|
else:
|
||||||
|
session['latest_detection_data'] = []
|
||||||
|
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': True,
|
'success': True,
|
||||||
'data': {
|
'data': {
|
||||||
@ -1300,6 +1309,23 @@ class AppServer:
|
|||||||
self.logger.error(f'删除检测数据失败: {e}')
|
self.logger.error(f'删除检测数据失败: {e}')
|
||||||
return jsonify({'success': False, 'error': str(e)}), 500
|
return jsonify({'success': False, 'error': str(e)}), 500
|
||||||
|
|
||||||
|
@self.app.route('/api/detection/sessions/<session_id>', methods=['DELETE'])
|
||||||
|
def delete_detection_session(session_id):
|
||||||
|
"""删除检测会话及其相关的检测数据"""
|
||||||
|
try:
|
||||||
|
self.db_manager.delete_detection_session(session_id)
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
'success': True,
|
||||||
|
'message': '检测会话删除成功'
|
||||||
|
})
|
||||||
|
|
||||||
|
except ValueError as e:
|
||||||
|
return jsonify({'success': False, 'error': str(e)}), 404
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.error(f'删除检测会话失败: {e}')
|
||||||
|
return jsonify({'success': False, 'error': str(e)}), 500
|
||||||
|
|
||||||
# ==================== 错误处理 ====================
|
# ==================== 错误处理 ====================
|
||||||
|
|
||||||
@self.app.errorhandler(404)
|
@self.app.errorhandler(404)
|
||||||
|
Loading…
Reference in New Issue
Block a user