54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
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"}
|