44 lines
1.2 KiB
Python
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)
|