Files
loom/backend/app/api/v1/schedules.py
T
2026-04-24 17:46:03 +08:00

54 lines
2.0 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Depends, Query
from app.core.deps import CurrentUser, DbDep, require_perm
from app.core.exceptions import ok
from app.schemas.schedule import ScheduleCreate, ScheduleUpdate
from app.services import schedule_service
router = APIRouter(prefix="/schedules", tags=["schedule"])
@router.get("", dependencies=[Depends(require_perm("system:cron:view"))])
async def list_schedules(db: DbDep) -> dict:
return ok(await schedule_service.list_all(db))
@router.get("/{sid}", dependencies=[Depends(require_perm("system:cron:view"))])
async def get_schedule(sid: int, db: DbDep) -> dict:
return ok(await schedule_service.get(db, sid))
@router.get("/{sid}/logs", dependencies=[Depends(require_perm("system:cron:view"))])
async def list_schedule_logs(
sid: int, db: DbDep, limit: int = Query(50, ge=1, le=500)
) -> dict:
return ok(await schedule_service.list_logs(db, sid, limit))
@router.post("", dependencies=[Depends(require_perm("system:cron:create"))])
async def create_schedule(data: ScheduleCreate, db: DbDep, user: CurrentUser) -> dict:
return ok(await schedule_service.create(db, data, user))
@router.patch("/{sid}", dependencies=[Depends(require_perm("system:cron:update"))])
async def update_schedule(sid: int, data: ScheduleUpdate, db: DbDep) -> dict:
return ok(await schedule_service.update(db, sid, data))
@router.post("/{sid}/toggle", dependencies=[Depends(require_perm("system:cron:update"))])
async def toggle_schedule(sid: int, enabled: bool, db: DbDep) -> dict:
return ok(await schedule_service.toggle(db, sid, enabled))
@router.post("/{sid}/trigger", dependencies=[Depends(require_perm("system:cron:update"))])
async def trigger_now(sid: int, db: DbDep, user: CurrentUser) -> dict:
return ok(await schedule_service.trigger_now(db, sid, user))
@router.delete("/{sid}", dependencies=[Depends(require_perm("system:cron:delete"))])
async def delete_schedule(sid: int, db: DbDep) -> dict:
await schedule_service.delete(db, sid)
return ok()