def delete_location(address: str, db: Session = Depends(get_db)): db_location = crud.get_location_by_address(db, address=address) if not db_location: raise HTTPException(status_code=404, detail="Location not found") try: return crud.delete_location(db, location=db_location) except AssertionError as ex: raise HTTPException(status_code=409, detail="Location cannot be deleted")
def update_location(address: str, payload: schemas.LocationUpdater, db: Session = Depends(get_db)): db_location = crud.get_location_by_address(db, address=address) if not db_location: raise HTTPException(status_code=404, detail="Location not found") if not payload.new_address: raise HTTPException(status_code=400, detail="No update data supplied") try: return crud.update_location_address(db, location=db_location, new_address=payload.new_address) except IntegrityError as ex: raise HTTPException(status_code=409, detail="Address already registered")
def create_user_location(user_location_creator: schemas.UserLocation, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=user_location_creator.phone) if not db_user: raise HTTPException(status_code=404, detail="User not found") db_location = crud.get_location_by_address( db, address=user_location_creator.address) if not db_location: raise HTTPException(status_code=404, detail="Location not found") db_user_location = crud.get_user_location_by_user_and_location( db, user=db_user, location=db_location) if db_user_location: raise HTTPException(status_code=409, detail="User location already created") out = crud.create_user_location(db, user=db_user, location=db_location, nickname=user_location_creator.nickname) return out
def delete_user_location(phone: str, address: Optional[str] = None, nickname: Optional[str] = None, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=phone) if address: db_location = crud.get_location_by_address(db, address=address) if not db_location: raise HTTPException(status_code=404, detail="Location not found") db_user_location = crud.get_user_location_by_user_and_location( db, user=db_user, location=db_location) elif nickname: db_user_location = crud.get_user_location_by_nickname_and_phone( db, nickname=nickname, phone=phone) else: raise HTTPException(status_code=422, detail="Address or nickname required") if not db_user_location: raise HTTPException(status_code=404, detail="User location not found") return crud.delete_user_location(db, user_location=db_user_location)
def create_location(location: schemas.LocationBase, db: Session = Depends(get_db)): db_location = crud.get_location_by_address(db, address=location.address) if db_location: raise HTTPException(status_code=409, detail="Location already created") return crud.create_location(db, location=location)
def read_locations(address: str, db: Session = Depends(get_db)): db_location = crud.get_location_by_address(db, address=address) if db_location is None: raise HTTPException(status_code=404, detail="Location not found") return db_location