from flask import jsonify, request from flask_jwt_extended import jwt_required from . import api_bp from ..models import CronJob from ..schemas import CronJobSchema, CronJobCreateSchema, CronJobUpdateSchema from ..services import CronJobService cron_job_schema = CronJobSchema() cron_job_create_schema = CronJobCreateSchema() cron_job_update_schema = CronJobUpdateSchema() @api_bp.route("/agents//cron-jobs", methods=["GET"]) @jwt_required() def get_cron_jobs(agent_id): cron_jobs = CronJob.query.filter_by(agent_id=agent_id).all() return jsonify(cron_job_schema.dump(cron_jobs, many=True)) @api_bp.route("/agents//cron-jobs", methods=["POST"]) @jwt_required() def create_cron_job(agent_id): data = request.get_json() errors = cron_job_create_schema.validate(data) if errors: return jsonify({"error": errors}), 400 try: cron_job = CronJobService.create_cron_job(agent_id, data) return jsonify(cron_job_schema.dump(cron_job)), 201 except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/cron-jobs/", methods=["GET"]) @jwt_required() def get_cron_job(cron_job_id): cron_job = CronJob.query.get(cron_job_id) if not cron_job: return jsonify({"error": "定时任务不存在"}), 404 return jsonify(cron_job_schema.dump(cron_job)) @api_bp.route("/cron-jobs/", methods=["PUT"]) @jwt_required() def update_cron_job(cron_job_id): cron_job = CronJob.query.get(cron_job_id) if not cron_job: return jsonify({"error": "定时任务不存在"}), 404 data = request.get_json() errors = cron_job_update_schema.validate(data) if errors: return jsonify({"error": errors}), 400 try: updated_cron_job = CronJobService.update_cron_job(cron_job, data) return jsonify(cron_job_schema.dump(updated_cron_job)) except ValueError as e: return jsonify({"error": str(e)}), 400 @api_bp.route("/cron-jobs/", methods=["DELETE"]) @jwt_required() def delete_cron_job(cron_job_id): try: CronJobService.delete_cron_job(cron_job_id) return jsonify({"message": "定时任务已删除"}) except ValueError as e: return jsonify({"error": str(e)}), 400