
- Created FastAPI application with SQLite database - Implemented monitor management endpoints (CRUD operations) - Added uptime checking functionality with response time tracking - Included statistics endpoints for uptime percentage and metrics - Set up database models and Alembic migrations - Added comprehensive API documentation - Configured CORS and health check endpoints
26 lines
851 B
Python
26 lines
851 B
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session
|
|
from app.db.session import get_db
|
|
from app.models.monitor import Monitor
|
|
from app.services.uptime_checker import UptimeChecker
|
|
|
|
router = APIRouter(prefix="/checks", tags=["checks"])
|
|
|
|
|
|
@router.post("/run/{monitor_id}")
|
|
def run_check(monitor_id: int, db: Session = Depends(get_db)):
|
|
monitor = db.query(Monitor).filter(Monitor.id == monitor_id).first()
|
|
if not monitor:
|
|
raise HTTPException(status_code=404, detail="Monitor not found")
|
|
|
|
checker = UptimeChecker(db)
|
|
result = checker.check_monitor(monitor)
|
|
return result
|
|
|
|
|
|
@router.post("/run-all")
|
|
def run_all_checks(db: Session = Depends(get_db)):
|
|
checker = UptimeChecker(db)
|
|
results = checker.check_all_active_monitors()
|
|
return {"checks_run": len(results), "results": results}
|