from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from mm_api.db import pool from mm_api.routers import locations, admin_units, auth, permissions, kyc, issues, officials, clients from mm_api.middleware import client_auth_middleware import mm_api.services.auth as auth_svc @asynccontextmanager async def lifespan(app: FastAPI): await pool.open() app.state.pool = pool async with pool.connection() as conn: await auth_svc.cleanup_expired_tokens(conn) yield await pool.close() app = FastAPI(title="Memleketmeselesi API", lifespan=lifespan) app.middleware("http")(client_auth_middleware) app.include_router(locations.router) app.include_router(admin_units.router) app.include_router(auth.router) app.include_router(permissions.router) app.include_router(kyc.router) app.include_router(issues.router) app.include_router(officials.router) app.include_router(clients.router)