first commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from flask import jsonify, request
|
||||
from flask_jwt_extended import jwt_required, get_jwt_identity
|
||||
from . import api_bp
|
||||
from ..models import Message, Conversation, Workspace
|
||||
from ..schemas import MessageSchema, MessageCreateSchema
|
||||
from ..services import MessageService
|
||||
|
||||
|
||||
message_schema = MessageSchema()
|
||||
message_create_schema = MessageCreateSchema()
|
||||
|
||||
|
||||
@api_bp.route("/conversations/<int:conversation_id>/messages", methods=["GET"])
|
||||
@jwt_required()
|
||||
def get_messages(conversation_id):
|
||||
user_id = get_jwt_identity()
|
||||
conversation = Conversation.query.filter_by(id=conversation_id).first()
|
||||
if not conversation:
|
||||
return jsonify({"error": "会话不存在"}), 404
|
||||
|
||||
workspace = Workspace.query.filter_by(
|
||||
id=conversation.workspace_id, user_id=user_id
|
||||
).first()
|
||||
if not workspace:
|
||||
return jsonify({"error": "无权访问此会话"}), 403
|
||||
|
||||
messages = (
|
||||
Message.query.filter_by(conversation_id=conversation_id)
|
||||
.order_by(Message.created_at)
|
||||
.all()
|
||||
)
|
||||
return jsonify(message_schema.dump(messages, many=True))
|
||||
|
||||
|
||||
@api_bp.route("/conversations/<int:conversation_id>/messages", methods=["POST"])
|
||||
@jwt_required()
|
||||
def create_message(conversation_id):
|
||||
user_id = get_jwt_identity()
|
||||
conversation = Conversation.query.filter_by(id=conversation_id).first()
|
||||
if not conversation:
|
||||
return jsonify({"error": "会话不存在"}), 404
|
||||
|
||||
workspace = Workspace.query.filter_by(
|
||||
id=conversation.workspace_id, user_id=user_id
|
||||
).first()
|
||||
if not workspace:
|
||||
return jsonify({"error": "无权访问此会话"}), 403
|
||||
|
||||
data = request.get_json()
|
||||
errors = message_create_schema.validate(data)
|
||||
if errors:
|
||||
return jsonify({"error": errors}), 400
|
||||
|
||||
try:
|
||||
message = MessageService.create_message(conversation_id, data)
|
||||
return jsonify(message_schema.dump(message)), 201
|
||||
except ValueError as e:
|
||||
return jsonify({"error": str(e)}), 400
|
||||
Reference in New Issue
Block a user