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 api.routers.datasets_router import router as dataset_router from api.routers.ws.upload_progress_ws import router as ws_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(ws_router) 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"]) app.include_router(dataset_router, prefix="/dataset", tags=["Upload"])