file_table_reader/main.py

60 lines
1.5 KiB
Python
Raw Normal View History

2025-11-06 07:23:24 +00:00
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from core.config import API_VERSION, ALLOWED_ORIGINS
2025-10-29 10:07:48 +00:00
from database.connection import engine
from database.models import Base
2025-11-17 03:53:15 +00:00
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
2025-10-29 10:07:48 +00:00
2025-10-30 04:42:21 +00:00
app = FastAPI(
title="ETL Geo Upload Service",
2025-11-06 07:23:24 +00:00
version=API_VERSION,
2025-10-30 04:42:21 +00:00
description="Upload Automation API"
)
2025-10-29 10:07:48 +00:00
app.add_middleware(
CORSMiddleware,
2025-11-06 07:23:24 +00:00
allow_origins=ALLOWED_ORIGINS,
2025-10-29 10:07:48 +00:00
allow_credentials=True,
2025-11-06 07:23:24 +00:00
allow_methods=["*"],
allow_headers=["*"],
2025-10-29 10:07:48 +00:00
)
2025-11-17 03:53:15 +00:00
# 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)
2025-11-17 04:07:59 +00:00
2025-11-17 03:53:15 +00:00
@app.get("/qgis/status")
def qgis_status():
try:
2025-11-17 04:07:59 +00:00
version = QgsApplication.qgisVersion()
2025-11-17 03:53:15 +00:00
return {
"qgis_status": "connected",
2025-11-17 04:07:59 +00:00
"qgis_version": version
2025-11-17 03:53:15 +00:00
}
except Exception as e:
return {
"qgis_status": "error",
"error": str(e)
}
2025-10-29 10:07:48 +00:00
2025-11-06 07:23:24 +00:00
# Register routers
app.include_router(system_router, tags=["System"])
app.include_router(auth_router, prefix="/auth", tags=["Auth"])
2025-11-17 03:53:15 +00:00
app.include_router(upload_router, prefix="/upload", tags=["Upload"])