From 94e965f1926b8f7708cf71c9d4d30809d9cc9363 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 4 Oct 2024 15:47:34 +0500 Subject: [PATCH] ._. --- app/infrastructure/database/dependencies.py | 1 - .../database/repository/role_repository.py | 2 +- app/main.py | 75 +++++++++++++++---- 3 files changed, 62 insertions(+), 16 deletions(-) diff --git a/app/infrastructure/database/dependencies.py b/app/infrastructure/database/dependencies.py index b85eb82..4cf28dc 100644 --- a/app/infrastructure/database/dependencies.py +++ b/app/infrastructure/database/dependencies.py @@ -1,6 +1,5 @@ from sqlalchemy.orm import Session from app.infrastructure.database.database import SessionLocal -from app.infrastructure.database.models import Base def get_db() -> Session: diff --git a/app/infrastructure/database/repository/role_repository.py b/app/infrastructure/database/repository/role_repository.py index f0b8ca0..48564e0 100644 --- a/app/infrastructure/database/repository/role_repository.py +++ b/app/infrastructure/database/repository/role_repository.py @@ -1,5 +1,5 @@ from sqlalchemy.orm import Session -from app.infrastructure.database.models.role import Role +from app.infrastructure.database.models.roles import Role class RolesRepository: diff --git a/app/main.py b/app/main.py index f6787e5..d2fdd45 100644 --- a/app/main.py +++ b/app/main.py @@ -1,21 +1,68 @@ -from fastapi import FastAPI +from fastapi import FastAPI, Request, HTTPException +from fastapi.responses import JSONResponse +import logging + +from starlette.middleware.cors import CORSMiddleware + from app.infrastructure.database.database import init_db -from app.infrastructure.fastapi.user_routes import router as user_router -from app.infrastructure.fastapi.status_routes import router as status_router -from app.infrastructure.fastapi.role_routes import router as role_router -from app.infrastructure.fastapi.order_routes import router as order_router from app.infrastructure.fastapi.accessory_routes import router as accessory_router +from app.infrastructure.fastapi.city_routes import router as city_router +from app.infrastructure.fastapi.delivery_accessory_routes import router as delivery_accessory_router +from app.infrastructure.fastapi.delivery_order_routes import router as delivery_order_router +from app.infrastructure.fastapi.federal_district_routes import router as federal_district_router +from app.infrastructure.fastapi.role_routes import router as role_router +from app.infrastructure.fastapi.status_routes import router as status_router +from app.infrastructure.fastapi.total_order_routes import router as total_order_router +from app.infrastructure.fastapi.truck_routes import router as truck_router +from app.infrastructure.fastapi.user_routes import router as user_router + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) app = FastAPI() +# app.add_middleware( +# CORSMiddleware, +# allow_origins=['*'], +# allow_credentials=True, +# allow_methods=['GET', 'POST', 'PUT', 'DELETE'], +# allow_headers=['*'], +# ) + init_db() -# app.include_router(user_router, prefix="/api/users", tags=["users"]) -# app.include_router(storage_router, prefix="/api/storages", tags=["storages"]) -# app.include_router(storage_accessory_router, prefix="/api/storage_accessories", tags=["storage_accessories"]) -# app.include_router(step_router, prefix="/api/steps", tags=["steps"]) -# app.include_router(status_router, prefix="/api/statuses", tags=["statuses"]) -# app.include_router(role_router, prefix="/api/roles", tags=["roles"]) -# app.include_router(order_router, prefix="/api/orders", tags=["orders"]) -# app.include_router(delivery_router, prefix="/api/deliveries", tags=["deliveries"]) -# app.include_router(accessory_router, prefix="/api/accessories", tags=["accessories"]) +app.include_router(accessory_router, prefix='/api', tags=['accessories']) +app.include_router(city_router, prefix='/api', tags=['cities']) +app.include_router(delivery_accessory_router, prefix='/api', tags=['delivery accessories']) +app.include_router(delivery_order_router, prefix='/api', tags=['delivery orders']) +app.include_router(federal_district_router, prefix='/api', tags=['federal districts']) +app.include_router(role_router, prefix='/api', tags=['roles']) +app.include_router(status_router, prefix='/api', tags=['statuses']) +app.include_router(total_order_router, prefix='/api', tags=['total orders']) +app.include_router(truck_router, prefix='/api', tags=['trucks']) +app.include_router(user_router, prefix='/api', tags=['users']) + + +@app.middleware('http') +async def log_requests(request: Request, call_next): + logger.info(f'Request: {request.method} {request.url}') + response = await call_next(request) + logger.info(f'Response: {response.status_code}') + return response + + +@app.exception_handler(HTTPException) +async def http_exception_handler(request: Request, exc: HTTPException): + return JSONResponse( + status_code=exc.status_code, + content={'detail': exc.detail}, + ) + + +@app.exception_handler(Exception) +async def generic_exception_handler(request: Request, exc: Exception): + logger.error(f'An error occurred: {exc}') + return JSONResponse( + status_code=500, + content={'detail': 'An internal error occurred. Please try again later.'}, + )