from flask import jsonify, request from flask_jwt_extended import jwt_required from . import api_bp from ..models import Model from ..schemas import ModelSchema, ModelCreateSchema from ..services import ModelService model_schema = ModelSchema() model_create_schema = ModelCreateSchema() @api_bp.route("/models", methods=["GET"]) @jwt_required() def get_models(): models = Model.query.all() return jsonify(model_schema.dump(models, many=True)) @api_bp.route("/models", methods=["POST"]) @jwt_required() def create_model(): data = request.get_json() errors = model_create_schema.validate(data) if errors: return jsonify({"error": errors}), 400 try: model = ModelService.create_model(data) return jsonify(model_schema.dump(model)), 201 except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/models/", methods=["GET"]) @jwt_required() def get_model(model_id): model = Model.query.get(model_id) if not model: return jsonify({"error": "模型不存在"}), 404 return jsonify(model_schema.dump(model)) @api_bp.route("/models/", methods=["PUT"]) @jwt_required() def update_model(model_id): model = Model.query.get(model_id) if not model: return jsonify({"error": "模型不存在"}), 404 data = request.get_json() try: updated_model = ModelService.update_model(model, data) return jsonify(model_schema.dump(updated_model)) except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/models/", methods=["DELETE"]) @jwt_required() def delete_model(model_id): try: ModelService.delete_model(model_id) return jsonify({"message": "模型已删除"}) except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/models/default", methods=["GET"]) @jwt_required() def get_default_model(): model = Model.query.filter_by(is_default=True, is_active=True).first() if not model: return jsonify({"error": "默认模型不存在"}), 404 return jsonify(model_schema.dump(model))