from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from core.config import API_VERSION, ALLOWED_ORIGINS from database.connection import engine from database.models import Base from api.routers.system_router import router as system_router from api.routers.upload_file_router import router as upload_router from api.routers.auth_router import router as auth_router from contextlib import asynccontextmanager from utils.qgis_init import init_qgis app = FastAPI( title="ETL Geo Upload Service", version=API_VERSION, description="Upload Automation API" ) app.add_middleware( CORSMiddleware, allow_origins=ALLOWED_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Base.metadata.create_all(bind=engine) # qgis setup @asynccontextmanager async def lifespan(app: FastAPI): global qgs qgs = init_qgis() print("QGIS initialized") yield # SHUTDOWN (optional) print("Shutting down...") app = FastAPI(lifespan=lifespan) @app.get("/qgis/status") def qgis_status(): try: version = QgsApplication.qgisVersion() return { "qgis_status": "connected", "qgis_version": version } except Exception as e: return { "qgis_status": "error", "error": str(e) } # Register routers app.include_router(system_router, tags=["System"]) app.include_router(auth_router, prefix="/auth", tags=["Auth"]) app.include_router(upload_router, prefix="/upload", tags=["Upload"])