Files
sentclaw/backend/app/api/skills.py
T
2026-04-07 16:05:05 +08:00

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