from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from utils.utils import Base, engine

# Import every module's models so ORM classes register with Base before create_all
import aircraft_management.models  # noqa: F401
import airport_route_management.models  # noqa: F401
import flight_management.models  # noqa: F401
import crew_management.models  # noqa: F401
import booking_management.models  # noqa: F401

Base.metadata.create_all(bind=engine)

from aircraft_management.router import router as aircraft_management_router
from airport_route_management.router import router as airport_route_management_router
from flight_management.router import router as flight_management_router
from crew_management.router import router as crew_management_router
from booking_management.router import router as booking_management_router

app = FastAPI(
    title="Airlines Management System",
    description="A streamlined web application to manage core airline operations including flight scheduling, aircraft management, passenger bookings, and crew assignments.",
    version="1.0.0"
)

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=False,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.include_router(aircraft_management_router)
app.include_router(airport_route_management_router)
app.include_router(flight_management_router)
app.include_router(crew_management_router)
app.include_router(booking_management_router)