/
killogram
/
E-Analyzer
Обзор
Документация
Войти
/
killogram
/
E-Analyzer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
api/main.py
90 строк
3 KB
Korabliov Kirill
Add purchases
01 июн 2025, 16:49
01 июн 2025, 16:49
376f2c0
Код
Авторство
О чём код?
# api/main.py from fastapi import FastAPI, Depends, HTTPException, Request from sqlalchemy.orm import Session from . import crud, models, schemas, database from .database import SessionLocal, engine from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import HTMLResponse from api.purchases import router as purchases_router from api.customers import router as customers_router from api.prices import router as prices_router from api.dates import router as dates_router from api.tracked import router as tracked_router # Новый маршрут для отслеживаемых закупок app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:8080"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(purchases_router, prefix="/purchases") app.include_router(customers_router, prefix="/customers") app.include_router(prices_router, prefix="/prices") app.include_router(dates_router, prefix="/dates") app.include_router(tracked_router, prefix="/tracked") # Новый маршрут @app.get("/") def read_root(): return {"message": "API E-Analyzer"} @app.get("/purchase_details/{purchase_id}", response_class=HTMLResponse) async def purchase_details_page(purchase_id: int): with open("frontend/purchase_details.html", "r", encoding="utf-8") as f: return f.read() @app.get("/customer_details/{customer_id}", response_class=HTMLResponse) async def customer_details_page(customer_id: int): with open("frontend/customer_details.html", "r", encoding="utf-8") as f: return f.read() # Dependency def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.post("/purchases/") def create_purchase(purchase: schemas.PurchaseCreate, db: Session = Depends(get_db)): db_purchase = crud.get_purchase_by_registry_number(db, registry_number=purchase.registry_number) if db_purchase: raise HTTPException(status_code=400, detail="Purchase already registered") db_purchase = crud.create_purchase(db, purchase) return db_purchase @app.post("/prices/") def create_price(price: schemas.PriceCreate, db: Session = Depends(get_db)): db_price = crud.create_price(db, price) return db_price @app.post("/dates/") def create_date(date: schemas.DateCreate, db: Session = Depends(get_db)): db_date = crud.create_date(db, date) return db_date @app.post("/customers/") def create_customer(customer: schemas.CustomerCreate, db: Session = Depends(get_db)): db_customer = crud.create_customer(db, customer) return db_customer @app.post("/tracked_purchases/") def create_tracked_purchase(tracked_purchase: schemas.TrackedPurchaseCreate, db: Session = Depends(get_db)): db_tracked_purchase = crud.create_tracked_purchase(db, tracked_purchase) return db_tracked_purchase @app.post("/add_purchase/") def add_purchase(purchase_data: schemas.AddPurchaseForm, db: Session = Depends(get_db)): try: db_purchase = crud.create_full_purchase(db, purchase_data) return {"message": "Purchase added successfully", "purchase_id": db_purchase.id} except HTTPException as e: raise e except Exception as e: db.rollback() raise HTTPException(status_code=500, detail=f"Error adding purchase: {str(e)}")