PyConES24/src/retailtwin/api/main.py
2023-09-18 09:32:03 +02:00

44 lines
1.2 KiB
Python

from fastapi import FastAPI, Request, Depends
from fastapi.responses import HTMLResponse
from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession
from dengfun.retail.api.db import get_inventory, get_session, get_stores
app = FastAPI(root_path="/api/v1")
@app.get("/test")
async def test(request: Request):
return {"message": "Hello World", "root_path": request.scope.get("root_path")}
@app.get("/stock", response_class=HTMLResponse)
async def stock(
request: Request,
store: int = 1,
page: int = 0,
pagesize: int = 20,
sortby: str = "upc",
async_session: async_sessionmaker[AsyncSession] = Depends(get_session),
) -> str:
body = await get_inventory(
store=store,
page=page,
pagesize=pagesize,
sortby=sortby,
root_path=request.scope.get("root_path"),
async_session=async_session,
)
return HTMLResponse(body, status_code=200)
@app.get("/stores", response_class=HTMLResponse)
async def stores(
request: Request,
async_session: async_sessionmaker[AsyncSession] = Depends(get_session),
):
body = await get_stores(
root_path=request.scope.get("root_path"),
async_session=async_session,
)
return HTMLResponse(body, status_code=200)