from flask import Blueprint, jsonify, request from ..models import Session, User from .. import db from . import globals session_routes = Blueprint('session', __name__) def validate_user_id(userId): """验证userId是否提供且存在于User表中""" if not userId: return jsonify({"error": "userId is required"}), 400 user = User.query.filter_by(id=userId).first() if not user: return jsonify({"error": "User not found"}), 404 return None @session_routes.route('/get-session/', methods=['GET']) def get_session(userId): """获取当前用户的所有会话""" validation_result = validate_user_id(userId) if validation_result: return validation_result sessions = Session.query.join(User).filter(Session.userId == userId).all() return jsonify(sessions=[session.to_dict() for session in sessions]), 200 @session_routes.route('/add-session', methods=['POST']) def add_session(): """添加会话""" data = request.get_json() userId, name = data.get('userId'), data.get('name') validation_result = validate_user_id(userId) if validation_result: return validation_result if not name: return jsonify({"error": "name is required"}), 400 new_session = Session(userId=userId, name=name) db.session.add(new_session) db.session.commit() return jsonify({ 'message': 'Session added successfully', 'data': new_session.to_dict(), }), 201 @session_routes.route('/delete-session//', methods=['DELETE']) def delete_session(userId, sessionId): """删除会话""" validation_result = validate_user_id(userId) if validation_result: return validation_result session = Session.query.filter_by( userId=userId, id=sessionId).first() if not session: return jsonify({"error": "Session not found"}), 404 db.session.delete(session) db.session.commit() return jsonify({'message': 'Session deleted successfully'}) @session_routes.route('/update-session//', methods=['PUT']) def update_session(userId, sessionId): """更新会话""" data = request.get_json() name = data.get('name') validation_result = validate_user_id(userId) if validation_result: return validation_result session = Session.query.filter_by( userId=userId, id=sessionId).first() if not session: return jsonify({"error": "Session not found"}), 404 if name: session.name = name db.session.commit() return jsonify({'message': 'Session updated successfully', 'session': session.to_dict()}), 200