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.models.stuff import Stuff
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")
logger = get_logger(__name__)
@router.post("/add_many", status_code=status.HTTP_201_CREATED)
async def create_multi_stuff(
payload: list[StuffSchema], db_session: AsyncSession = Depends(get_db)
):
async def create_multi_stuff(payload: list[StuffSchema], db_session: AsyncSession = Depends(get_db)):
try:
stuff_instances = [
Stuff(name=stuf.name, description=stuf.description) for stuf in payload
]
stuff_instances = [Stuff(name=stuf.name, description=stuf.description) for stuf in payload]
db_session.add_all(stuff_instances)
await db_session.commit()
except SQLAlchemyError as ex:
# logger.exception(ex)
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=repr(ex)
) from ex
raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=repr(ex)) from ex
else:
logger.info(
f"{len(stuff_instances)} instances of Stuff inserted into database."
)
logger.info(f"{len(stuff_instances)} instances of Stuff inserted into database.")
return True
@router.post("", status_code=status.HTTP_201_CREATED, response_model=StuffResponse)
async def create_stuff(
payload: StuffSchema, db_session: AsyncSession = Depends(get_db)
):
async def create_stuff(payload: StuffSchema, db_session: AsyncSession = Depends(get_db)):
stuff = Stuff(name=payload.name, description=payload.description)
await stuff.save(db_session)
return stuff

View File

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

View File

@ -3,9 +3,9 @@ from fastapi import FastAPI
from app.api.nonsense import router as nonsense_router
from app.api.shakespeare import router as shakespeare_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")