shuqianpinggu/app/routes/session_routes.py
WIN-T9V3LPE8NK2\Administrator 4911f3024f 主分支
2025-06-17 17:46:44 +08:00

79 lines
2.6 KiB
Python

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/<int:userId>', 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/<int:userId>/<int:sessionId>', 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/<int:userId>/<int:sessionId>', 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