123
This commit is contained in:
54
main.py
54
main.py
@@ -1,43 +1,37 @@
|
||||
from typing import Annotated
|
||||
|
||||
from celery.result import AsyncResult
|
||||
from fastapi import FastAPI, Depends, Body
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.dialects.postgresql import insert
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import joinedload
|
||||
from fastapi import FastAPI, Depends, HTTPException
|
||||
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
|
||||
from starlette import status
|
||||
from starlette.responses import JSONResponse
|
||||
|
||||
from backend.session import get_session
|
||||
from database import DailyStock
|
||||
from database.sipro import *
|
||||
from queries.general import get_stocks_data
|
||||
import background.tasks
|
||||
from background.tasks import *
|
||||
from updaters.stocks_updater import StockUpdate
|
||||
from schemas.general import UpdateRequest, UpdateResponse
|
||||
|
||||
app = FastAPI()
|
||||
auth_schema = HTTPBearer()
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root(
|
||||
session: Annotated[AsyncSession, Depends(get_session)],
|
||||
marketplace_id: int
|
||||
async def check_auth(token: Annotated[HTTPAuthorizationCredentials, Depends(auth_schema)]):
|
||||
if token.credentials != 'vvHh1QNl7lS6c7OVwmxU1TVNd7DLlc9W810csZGf4rkqOrBy6fQwlhIDZsQZd9hQYZYK47yWv33aCq':
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail='Invalid credentials')
|
||||
|
||||
|
||||
app = FastAPI(
|
||||
dependencies=[Depends(check_auth)]
|
||||
)
|
||||
|
||||
|
||||
@app.post(
|
||||
'/update',
|
||||
response_model=UpdateResponse
|
||||
)
|
||||
async def update(
|
||||
request: UpdateRequest
|
||||
):
|
||||
marketplace = await session.get(Marketplace, marketplace_id, options=[
|
||||
joinedload(Marketplace.warehouses).joinedload(Warehouse.suppliers),
|
||||
joinedload(Marketplace.warehouses).joinedload(Warehouse.company_warehouses),
|
||||
joinedload(Marketplace.company).joinedload(Company.warehouse)
|
||||
])
|
||||
data = await get_stocks_data(session, marketplace)
|
||||
data = sorted(data, key=lambda x: x['denco_article'])
|
||||
return {"message": data}
|
||||
|
||||
|
||||
@app.post("/tasks", status_code=201)
|
||||
def run_task(payload=Body(...)):
|
||||
task_type = payload["type"]
|
||||
task = test_task.delay()
|
||||
return JSONResponse({"task_id": task.id})
|
||||
task = background.tasks.process_update.delay(request.product_ids)
|
||||
return UpdateResponse(task_id=task.id)
|
||||
|
||||
|
||||
@app.get("/tasks/{task_id}")
|
||||
|
||||
Reference in New Issue
Block a user