|
| 1 | +from fastapi import APIRouter, Depends, Query |
| 2 | +from sqlalchemy.ext.asyncio import AsyncSession |
| 3 | + |
| 4 | +from app.core.database import get_db |
| 5 | +from app.modules.calendar.birthday_schemas import BirthdayCreate, BirthdayResponse, UpcomingBirthdayResponse |
| 6 | +from app.modules.calendar import birthday_service as service |
| 7 | + |
| 8 | +router = APIRouter(prefix="/birthdays", tags=["birthdays"]) |
| 9 | + |
| 10 | + |
| 11 | +@router.get("", response_model=list[BirthdayResponse]) |
| 12 | +async def list_birthdays(db: AsyncSession = Depends(get_db)): |
| 13 | + return await service.get_all_birthdays(db) |
| 14 | + |
| 15 | + |
| 16 | +@router.get("/upcoming", response_model=list[UpcomingBirthdayResponse]) |
| 17 | +async def upcoming_birthdays( |
| 18 | + days: int = Query(7, ge=1, le=365), |
| 19 | + db: AsyncSession = Depends(get_db), |
| 20 | +): |
| 21 | + return await service.get_upcoming_birthdays(db, days) |
| 22 | + |
| 23 | + |
| 24 | +@router.get("/by-date", response_model=list[BirthdayResponse]) |
| 25 | +async def birthdays_by_date( |
| 26 | + month: int = Query(..., ge=1, le=12), |
| 27 | + day: int = Query(..., ge=1, le=31), |
| 28 | + db: AsyncSession = Depends(get_db), |
| 29 | +): |
| 30 | + return await service.get_birthdays_by_date(db, month, day) |
| 31 | + |
| 32 | + |
| 33 | +@router.post("", response_model=BirthdayResponse, status_code=201) |
| 34 | +async def create_birthday(data: BirthdayCreate, db: AsyncSession = Depends(get_db)): |
| 35 | + return await service.create_birthday(db, data) |
| 36 | + |
| 37 | + |
| 38 | +@router.delete("/{birthday_id}") |
| 39 | +async def delete_birthday(birthday_id: int, db: AsyncSession = Depends(get_db)): |
| 40 | + await service.delete_birthday(db, birthday_id) |
| 41 | + return {"message": "Birthday deleted"} |
0 commit comments