def get_db(): SessionLocal = get_session() db = SessionLocal() try: yield db finally: db.close()
async def _get(self, obj_id: Any): try: async with get_session() as db: smtm = await db.execute(select(self.model).filter(self.model.id == obj_id)) return smtm.scalars().first() except (DataError, DatabaseError, DisconnectionError, IntegrityError) as err: logger.error(f"SQLAlchemy error {err}") except Exception as e: logger.error(f"Error in dao {e}") raise e
async def create(self, obj_in: CreateSchemaType) -> ModelType: try: data_db = self.obj_in_to_db_obj(obj_in=obj_in) async with get_session() as db: db.add(data_db) await db.commit() response = self.Meta.response_create_type.from_orm(data_db) return response except (DataError, DatabaseError, DisconnectionError, IntegrityError) as err: logger.error(f"SQLAlchemy error {err}") except Exception as e: logger.error(f"Error in dao {e}") raise e
async def update(self, obj_id: Any, obj_in: UpdateSchemaType) -> ModelType: try: db_obj = await self._get(obj_id) response = None if db_obj: db_obj = self.obj_in_to_db_obj_attrs(obj_in, db_obj) async with get_session() as db: db.add(db_obj) await db.commit() response = self.Meta.response_update_type.from_orm(db_obj) return response except (DataError, DatabaseError, DisconnectionError, IntegrityError) as err: logger.error(f"SQLAlchemy error {err}") except Exception as e: logger.error(f"Error in dao {e}") raise e
def get_current_user(token: str, ): credentials_exception = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) try: payload = jwt.decode(token, settings.SECRET_KEY, algorithms=[settings.ALGORITHM]) document: str = payload.get("sub") if document is None: raise credentials_exception except JWTError: raise credentials_exception db = get_session()() user = _get_user(db, document=document) if user is None: raise credentials_exception return user
def get_orders(db=get_session()): orders = (db.query(Order).filter( ~Order.order_status.in_(["paid", "refused"])).all()) return orders
def get_db(): session_local = get_session() db = session_local() return db