from fastapi import APIRouter, Depends, HTTPException, Query from sqlalchemy.orm import Session from typing import List import crud import models import schemas from database import get_db router = APIRouter( prefix="/reminders", tags=["reminders"] ) @router.post("/", response_model=schemas.Reminder) def create_reminder(reminder: schemas.ReminderCreate, db: Session = Depends(get_db)): # Verify task exists db_task = crud.get_task(db, task_id=reminder.task_id) if not db_task: raise HTTPException(status_code=404, detail="Task not found") return crud.create_reminder(db=db, reminder=reminder) @router.get("/", response_model=List[schemas.Reminder]) def read_reminders( skip: int = 0, limit: int = 100, task_id: int = Query(None, description="Filter by Task ID"), db: Session = Depends(get_db) ): reminders = crud.get_reminders(db, skip=skip, limit=limit, task_id=task_id) return reminders @router.get("/{reminder_id}", response_model=schemas.Reminder) def read_reminder(reminder_id: int, db: Session = Depends(get_db)): db_reminder = crud.get_reminder(db, reminder_id=reminder_id) if db_reminder is None: raise HTTPException(status_code=404, detail="Reminder not found") return db_reminder @router.put("/{reminder_id}", response_model=schemas.Reminder) def update_reminder_endpoint(reminder_id: int, reminder: schemas.ReminderUpdate, db: Session = Depends(get_db)): db_reminder = crud.update_reminder(db, reminder_id=reminder_id, reminder_update=reminder) if db_reminder is None: raise HTTPException(status_code=404, detail="Reminder not found") return db_reminder @router.delete("/{reminder_id}") def delete_reminder_endpoint(reminder_id: int, db: Session = Depends(get_db)): success = crud.delete_reminder(db, reminder_id=reminder_id) if not success: raise HTTPException(status_code=404, detail="Reminder not found") return {"message": "Reminder successfully deleted"}