from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from typing import List from app.database import get_db from app.models import Backup from app.schemas import Backup as BackupSchema router = APIRouter(prefix="/api/backups", tags=["backups"]) @router.get("/", response_model=List[BackupSchema]) async def list_backups(db: AsyncSession = Depends(get_db)): result = await db.execute(select(Backup).order_by(Backup.created_at.desc())) backups = result.scalars().all() return backups @router.get("/{backup_id}", response_model=BackupSchema) async def get_backup(backup_id: int, db: AsyncSession = Depends(get_db)): result = await db.execute(select(Backup).where(Backup.id == backup_id)) backup = result.scalar_one_or_none() if not backup: raise HTTPException(status_code=404, detail="Backup not found") return backup @router.delete("/{backup_id}") async def delete_backup(backup_id: int, db: AsyncSession = Depends(get_db)): result = await db.execute(select(Backup).where(Backup.id == backup_id)) backup = result.scalar_one_or_none() if not backup: raise HTTPException(status_code=404, detail="Backup not found") await db.delete(backup) await db.commit() return {"message": "Backup deleted"}