from flask import jsonify, request from flask_jwt_extended import jwt_required from . import api_bp from ..models import Channel from ..schemas import ChannelSchema, ChannelCreateSchema, ChannelUpdateSchema from ..services import ChannelService channel_schema = ChannelSchema() channel_create_schema = ChannelCreateSchema() channel_update_schema = ChannelUpdateSchema() @api_bp.route("/channels", methods=["GET"]) @jwt_required() def get_channels(): channels = Channel.query.all() return jsonify(channel_schema.dump(channels, many=True)) @api_bp.route("/channels", methods=["POST"]) @jwt_required() def create_channel(): data = request.get_json() errors = channel_create_schema.validate(data) if errors: return jsonify({"error": errors}), 400 try: channel = ChannelService.create_channel(data) return jsonify(channel_schema.dump(channel)), 201 except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/channels/", methods=["GET"]) @jwt_required() def get_channel(channel_id): channel = Channel.query.get(channel_id) if not channel: return jsonify({"error": "渠道不存在"}), 404 return jsonify(channel_schema.dump(channel)) @api_bp.route("/channels/", methods=["PUT"]) @jwt_required() def update_channel(channel_id): channel = Channel.query.get(channel_id) if not channel: return jsonify({"error": "渠道不存在"}), 404 data = request.get_json() errors = channel_update_schema.validate(data) if errors: return jsonify({"error": errors}), 400 try: updated_channel = ChannelService.update_channel(channel, data) return jsonify(channel_schema.dump(updated_channel)) except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/channels/", methods=["DELETE"]) @jwt_required() def delete_channel(channel_id): try: ChannelService.delete_channel(channel_id) return jsonify({"message": "渠道已删除"}) except ValueError as e: return jsonify({"error": str(e)}), 400