Пример #1
0
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
Пример #2
0
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
Пример #3
0
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)
Пример #4
0
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")
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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