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 user_management.models  # noqa: F401
import card_catalog.models  # noqa: F401
import grading.models  # noqa: F401
import listing_management.models  # noqa: F401
import shopping.models  # noqa: F401
import order_management.models  # noqa: F401
import offers.models  # noqa: F401
import communication.models  # noqa: F401
import reviews.models  # noqa: F401
import disputes.models  # noqa: F401
import transactions.models  # noqa: F401
import notifications.models  # noqa: F401
import reports.models  # noqa: F401
import promotions.models  # noqa: F401
import platform_settings.models  # noqa: F401

Base.metadata.create_all(bind=engine)

from user_management.router import router as user_management_router
from card_catalog.router import router as card_catalog_router
from grading.router import router as grading_router
from listing_management.router import router as listing_management_router
from shopping.router import router as shopping_router
from order_management.router import router as order_management_router
from offers.router import router as offers_router
from communication.router import router as communication_router
from reviews.router import router as reviews_router
from disputes.router import router as disputes_router
from transactions.router import router as transactions_router
from notifications.router import router as notifications_router
from reports.router import router as reports_router
from promotions.router import router as promotions_router
from platform_settings.router import router as platform_settings_router

app = FastAPI(title="Pokemon Card Resell Platform", description="A specialized e-commerce marketplace enabling collectors and traders to buy, sell, and trade Pokemon trading cards with secure transactions, card authentication, and inventory management.", version="1.0.0")

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

app.include_router(user_management_router)
app.include_router(card_catalog_router)
app.include_router(grading_router)
app.include_router(listing_management_router)
app.include_router(shopping_router)
app.include_router(order_management_router)
app.include_router(offers_router)
app.include_router(communication_router)
app.include_router(reviews_router)
app.include_router(disputes_router)
app.include_router(transactions_router)
app.include_router(notifications_router)
app.include_router(reports_router)
app.include_router(promotions_router)
app.include_router(platform_settings_router)