initial commit
This commit is contained in:
56
app/api/cemeteries.py
Normal file
56
app/api/cemeteries.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from ..db import get_db
|
||||
from ..models import Cemetery
|
||||
from ..schemas import CemeteryCreate, CemeteryOut, CemeteryUpdate
|
||||
from ..dependencies import require_admin
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/", response_model=CemeteryOut, dependencies=[Depends(require_admin)])
|
||||
def create_cemetery(payload: CemeteryCreate, db: Session = Depends(get_db)):
|
||||
cemetery = Cemetery(**payload.dict())
|
||||
db.add(cemetery)
|
||||
db.commit()
|
||||
db.refresh(cemetery)
|
||||
return cemetery
|
||||
|
||||
|
||||
@router.get("/", response_model=list[CemeteryOut])
|
||||
def list_cemeteries(db: Session = Depends(get_db)):
|
||||
return db.query(Cemetery).order_by(Cemetery.id.desc()).all()
|
||||
|
||||
|
||||
@router.get("/{cemetery_id}", response_model=CemeteryOut)
|
||||
def get_cemetery(cemetery_id: int, db: Session = Depends(get_db)):
|
||||
cemetery = db.query(Cemetery).get(cemetery_id)
|
||||
if not cemetery:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
|
||||
return cemetery
|
||||
|
||||
|
||||
@router.patch("/{cemetery_id}", response_model=CemeteryOut, dependencies=[Depends(require_admin)])
|
||||
def update_cemetery(cemetery_id: int, payload: CemeteryUpdate, db: Session = Depends(get_db)):
|
||||
cemetery = db.query(Cemetery).get(cemetery_id)
|
||||
if not cemetery:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
|
||||
for k, v in payload.dict(exclude_unset=True).items():
|
||||
setattr(cemetery, k, v)
|
||||
db.commit()
|
||||
db.refresh(cemetery)
|
||||
return cemetery
|
||||
|
||||
|
||||
@router.delete("/{cemetery_id}", status_code=204, dependencies=[Depends(require_admin)])
|
||||
def delete_cemetery(cemetery_id: int, db: Session = Depends(get_db)):
|
||||
cemetery = db.query(Cemetery).get(cemetery_id)
|
||||
if not cemetery:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Not found")
|
||||
db.delete(cemetery)
|
||||
db.commit()
|
||||
return None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user