def _is_user_exist(self, user: RegisterUserSchema) -> bool: with scoped_session() as session: find_user = session.query(UserModel).filter( or_(UserModel.email == user.email, UserModel.username == user.username))\ .first() return False if find_user is None else True
def create_offer(self, offer: CreateOfferSchema) -> OfferModel: with scoped_session() as session: new_offer = OfferModel(user_id=offer.user_id, title=offer.title, text=offer.text) session.add(new_offer) session.flush() return new_offer
def create_user(self, user: RegisterUserSchema) -> Optional[UserModel]: if self._is_user_exist(user): raise UserExistExcept() password_hash = generate_password_hash(user.password) with scoped_session() as session: new_user = UserModel(username=user.username, password=password_hash, email=user.email) session.add(new_user) session.flush() return new_user
def authenticate(self, auth_schema: AuthUserSchema) -> Tuple[int, bytes]: password, username = auth_schema.password, auth_schema.username with scoped_session() as session: user = session.query(UserModel).filter( UserModel.username == username).first() if user is None: raise IncorrectlyLoginPassExcept() if check_password_hash(user.password, password): token = self.encode_auth_token(user.id) return user.id, token.decode() else: raise IncorrectlyLoginPassExcept()
def get_user_by_id(self, id: int) -> UserModel: with scoped_session() as session: user = session.query(UserModel).filter(UserModel.id == id).first() if user is None: raise UserNotFound() return user
def get_offer_by_id(self, offer_id) -> OfferModel: with scoped_session() as session: offer = session.query(OfferModel).filter( OfferModel.id == offer_id).first() return offer
def get_offers_by_user_id(self, user_id) -> List[Dict]: with scoped_session() as session: offers = session.query(OfferModel).filter( OfferModel.user_id == user_id).all() return [o.as_dict() for o in offers]