46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
from flask import jsonify
|
|
from flask_jwt_extended import jwt_required
|
|
from . import api_bp
|
|
from ..models import Skill
|
|
from ..schemas import SkillSchema
|
|
from ..services import SkillService
|
|
|
|
|
|
skill_schema = SkillSchema()
|
|
|
|
|
|
@api_bp.route("/skills", methods=["GET"])
|
|
@jwt_required()
|
|
def get_skills():
|
|
skills = Skill.query.all()
|
|
return jsonify(skill_schema.dump(skills, many=True))
|
|
|
|
|
|
@api_bp.route("/skills/<int:skill_id>", methods=["GET"])
|
|
@jwt_required()
|
|
def get_skill(skill_id):
|
|
skill = Skill.query.get(skill_id)
|
|
if not skill:
|
|
return jsonify({"error": "技能不存在"}), 404
|
|
return jsonify(skill_schema.dump(skill))
|
|
|
|
|
|
@api_bp.route("/skills/<int:skill_id>/install", methods=["POST"])
|
|
@jwt_required()
|
|
def install_skill(skill_id):
|
|
try:
|
|
SkillService.install_skill(skill_id)
|
|
return jsonify({"message": "技能已安装"})
|
|
except ValueError as e:
|
|
return jsonify({"error": str(e)}), 400
|
|
|
|
|
|
@api_bp.route("/skills/<int:skill_id>/uninstall", methods=["POST"])
|
|
@jwt_required()
|
|
def uninstall_skill(skill_id):
|
|
try:
|
|
SkillService.uninstall_skill(skill_id)
|
|
return jsonify({"message": "技能已卸载"})
|
|
except ValueError as e:
|
|
return jsonify({"error": str(e)}), 400
|