79 lines
2.6 KiB
Python
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
|