52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
from contextlib import asynccontextmanager
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
from app.auth import ensure_default_admin
|
|
from app.database import Base, engine, SessionLocal
|
|
from app.routes.auth import router as auth_router
|
|
from app.routers.inventory import router as inventory_router
|
|
from app.routers.relations import router as relations_router
|
|
from app.routers.discoveries import router as discoveries_router
|
|
from app.routers.jobs import router as jobs_router
|
|
from app.routers.objects import router as objects_router
|
|
from app.routers.health import router as health_router
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
# Create all tables
|
|
Base.metadata.create_all(bind=engine)
|
|
# Seed default users if DB is empty
|
|
db = SessionLocal()
|
|
try:
|
|
ensure_default_admin(db)
|
|
finally:
|
|
db.close()
|
|
yield
|
|
|
|
|
|
app = FastAPI(title="NetMapper API", version="0.1.0", lifespan=lifespan)
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(auth_router)
|
|
app.include_router(health_router)
|
|
app.include_router(inventory_router)
|
|
app.include_router(relations_router)
|
|
app.include_router(discoveries_router)
|
|
app.include_router(jobs_router)
|
|
app.include_router(objects_router)
|
|
|
|
|
|
@app.get("/health")
|
|
async def health():
|
|
return {"status": "ok"}
|