Spaces:
Runtime error
Runtime error
import uuid | |
from fastapi import APIRouter, HTTPException | |
from api.schemas import CreatePetSchema, UpdatePetSchema | |
from api.models import Pet | |
from api.database import SessionLocal | |
router = APIRouter() | |
async def get_pets(): | |
db = SessionLocal() | |
try: | |
pets = db.query(Pet).all() | |
return [{"id": pet.id, "name": pet.name, "age": pet.age} for pet in pets] | |
except Exception as e: | |
db.rollback() | |
raise HTTPException(status_code=400, detail=str(e)) | |
finally: | |
db.close() | |
async def create_pet(pet: CreatePetSchema): | |
db = SessionLocal() | |
try: | |
new_pet = Pet(**pet.dict()) | |
db.add(new_pet) | |
db.commit() | |
return {"id": new_pet.id, "name": new_pet.name, "age": new_pet.age} | |
except Exception as e: | |
db.rollback() | |
raise HTTPException(status_code=400, detail=str(e)) | |
finally: | |
db.close() | |
async def update_pet(pet_id: uuid.UUID, pet: UpdatePetSchema): | |
db = SessionLocal() | |
try: | |
existing_pet = db.query(Pet).filter(Pet.id == pet_id).first() | |
if not existing_pet: | |
raise HTTPException(status_code=404, detail="Pet not found") | |
for attr, value in pet.dict().items(): | |
setattr(existing_pet, attr, value) | |
db.commit() | |
return {"id": existing_pet.id, "name": existing_pet.name, "age": existing_pet.age, "gender": existing_pet.gender} | |
except Exception as e: | |
db.rollback() | |
raise HTTPException(status_code=400, detail=str(e)) | |
finally: | |
db.close() |