76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
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/<int:model_id>", 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/<int:model_id>", 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/<int:model_id>", 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))
|