unify logging with rich

This commit is contained in:
Jakub Miazek 2023-04-10 21:42:06 +02:00
parent 429909344d
commit aa1b9ec867
3 changed files with 14 additions and 27 deletions

View File

@ -5,39 +5,29 @@ from sqlalchemy.ext.asyncio import AsyncSession
from app.database import get_db from app.database import get_db
from app.models.stuff import Stuff from app.models.stuff import Stuff
from app.schemas.stuff import StuffResponse, StuffSchema from app.schemas.stuff import StuffResponse, StuffSchema
from app.utils import get_logger from app.logging import AppLogger
logger = AppLogger.__call__().get_logger()
router = APIRouter(prefix="/v1/stuff") router = APIRouter(prefix="/v1/stuff")
logger = get_logger(__name__)
@router.post("/add_many", status_code=status.HTTP_201_CREATED) @router.post("/add_many", status_code=status.HTTP_201_CREATED)
async def create_multi_stuff( async def create_multi_stuff(payload: list[StuffSchema], db_session: AsyncSession = Depends(get_db)):
payload: list[StuffSchema], db_session: AsyncSession = Depends(get_db)
):
try: try:
stuff_instances = [ stuff_instances = [Stuff(name=stuf.name, description=stuf.description) for stuf in payload]
Stuff(name=stuf.name, description=stuf.description) for stuf in payload
]
db_session.add_all(stuff_instances) db_session.add_all(stuff_instances)
await db_session.commit() await db_session.commit()
except SQLAlchemyError as ex: except SQLAlchemyError as ex:
# logger.exception(ex) # logger.exception(ex)
raise HTTPException( raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=repr(ex)) from ex
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=repr(ex)
) from ex
else: else:
logger.info( logger.info(f"{len(stuff_instances)} instances of Stuff inserted into database.")
f"{len(stuff_instances)} instances of Stuff inserted into database."
)
return True return True
@router.post("", status_code=status.HTTP_201_CREATED, response_model=StuffResponse) @router.post("", status_code=status.HTTP_201_CREATED, response_model=StuffResponse)
async def create_stuff( async def create_stuff(payload: StuffSchema, db_session: AsyncSession = Depends(get_db)):
payload: StuffSchema, db_session: AsyncSession = Depends(get_db)
):
stuff = Stuff(name=payload.name, description=payload.description) stuff = Stuff(name=payload.name, description=payload.description)
await stuff.save(db_session) await stuff.save(db_session)
return stuff return stuff

View File

@ -4,11 +4,10 @@ from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from app import config from app import config
from app.utils import get_logger from app.logging import AppLogger
logger = get_logger(__name__)
global_settings = config.get_settings() global_settings = config.get_settings()
logger = AppLogger.__call__().get_logger()
engine = create_async_engine( engine = create_async_engine(
global_settings.asyncpg_url, global_settings.asyncpg_url,
@ -18,13 +17,11 @@ engine = create_async_engine(
# expire_on_commit=False will prevent attributes from being expired # expire_on_commit=False will prevent attributes from being expired
# after commit. # after commit.
AsyncSessionFactory = sessionmaker( AsyncSessionFactory = sessionmaker(engine, autoflush=False, expire_on_commit=False, class_=AsyncSession)
engine, autoflush=False, expire_on_commit=False, class_=AsyncSession
)
# Dependency # Dependency
async def get_db() -> AsyncGenerator: async def get_db() -> AsyncGenerator:
async with AsyncSessionFactory() as session: async with AsyncSessionFactory() as session:
logger.debug(f"ASYNC Pool: {engine.pool.status()}") # logger.debug(f"ASYNC Pool: {engine.pool.status()}")
yield session yield session

View File

@ -3,9 +3,9 @@ from fastapi import FastAPI
from app.api.nonsense import router as nonsense_router from app.api.nonsense import router as nonsense_router
from app.api.shakespeare import router as shakespeare_router from app.api.shakespeare import router as shakespeare_router
from app.api.stuff import router as stuff_router from app.api.stuff import router as stuff_router
from app.utils import get_logger from app.logging import AppLogger
logger = get_logger(__name__) logger = AppLogger.__call__().get_logger()
app = FastAPI(title="Stuff And Nonsense API", version="0.5") app = FastAPI(title="Stuff And Nonsense API", version="0.5")