/
planver
/
planver-main
Обзор
Документация
Войти
/
planver
/
planver-main
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
src/main.py
70 строк
2 KB
waldemarX
event plans
21 ноя 2025, 12:39
21 ноя 2025, 12:39
8c6f829
Код
Авторство
О чём код?
import logging import traceback from fastapi import FastAPI, Request from fastapi.responses import JSONResponse from contextlib import asynccontextmanager from fastapi.middleware.cors import CORSMiddleware from src.users import user_api from src.events import events_api from src.config import settings from src.core.db_base_map import session_context from src.core.db_postgres import recreate_tables, sessionmaker logger = logging.getLogger(__name__) @asynccontextmanager async def lifespan(app: FastAPI): if settings.env == "DEV": await recreate_tables() yield app = FastAPI( title="Planver Main Backend", lifespan=lifespan, version="1.0.0", ) app.include_router(user_api.user_router, prefix="/api") app.include_router(events_api.events_router, prefix="/api") app.include_router(events_api.lans_router, prefix="/api") app.include_router(events_api.categories_router, prefix="/api") app.include_router(events_api.event_booking_router, prefix="/api") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.middleware("http") async def db_session_middleware(request: Request, call_next): """ Установка сессии в контекст для каждого запроса """ async with sessionmaker() as session: session_context.set(session) response = await call_next(request) await session.commit() return response @app.middleware("http") async def global_exception_handler(request: Request, call_next): try: response = await call_next(request) return response except Exception as exc: # Логируем ошибку logger.error(f"Unhandled exception: {str(exc)}") logger.error(traceback.format_exc()) # Возвращаем стандартизированный ответ return JSONResponse( status_code=500, content={"detail": "Internal server error"} )