def read_user_locations(phone: str, nickname: Optional[str] = None, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=phone) if not db_user: raise HTTPException(status_code=404, detail="User not found") if nickname: locations = [ crud.get_user_location_by_nickname_and_phone(db, nickname=nickname, phone=phone) ] else: locations = crud.get_user_locations_by_phone(db, phone=phone) if not locations[0]: raise HTTPException(status_code=404, detail="User location(s) not found") return locations
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 update_user(phone: str, payload: schemas.UserUpdater, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=phone) if not db_user: raise HTTPException(status_code=404, detail="User not found") if payload.new_name: return crud.update_user_name(db, user=db_user, new_name=payload.new_name) elif payload.new_phone: try: return crud.update_user_phone(db, user=db_user, new_phone=payload.new_phone) except IntegrityError as ex: raise HTTPException(status_code=409, detail="Phone already registered") else: raise HTTPException(status_code=400, detail="No update data supplied")
def delete_user(phone: str, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=phone) if not db_user: raise HTTPException(status_code=404, detail="User not found") return crud.delete_user(db, user=db_user)
def create_user(user: schemas.UserBase, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=user.phone) if db_user: raise HTTPException(status_code=409, detail="Phone already registered") return crud.create_user(db, user=user)
def read_user(phone: str, db: Session = Depends(get_db)): db_user = crud.get_user_by_phone(db, phone=phone) if db_user is None: raise HTTPException(status_code=404, detail="User not found") return db_user