from fastapi import APIRouter, Depends, HTTPException from fastapi.security import OAuth2PasswordBearer from services.shelter_service import ShelterService from models.schemas import CreateShelter, UpdateShelter from config.database import get_db router = APIRouter() oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/v1/auth/token") @router.post("/", status_code=201) async def create_shelter(shelter: CreateShelter, token: str = Depends(oauth2_scheme)): async with get_db() as db: return await ShelterService.create_shelter(shelter, db, token) @router.get("/{shelter_id}") async def get_shelter(shelter_id: int): async with get_db() as db: return await ShelterService.get_shelter(shelter_id, db) @router.get("/") async def get_all_shelters(): async with get_db() as db: return await ShelterService.get_all_shelters(db) @router.put("/{shelter_id}") async def update_shelter(shelter_id: int, shelter: UpdateShelter, token: str = Depends(oauth2_scheme)): async with get_db() as db: return await ShelterService.update_shelter(shelter_id, shelter, db, token) @router.delete("/{shelter_id}") async def delete_shelter(shelter_id: int, token: str = Depends(oauth2_scheme)): async with get_db() as db: return await ShelterService.delete_shelter(shelter_id, db, token)