from pathlib import Path

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from starlette.middleware.sessions import SessionMiddleware

from app.core.config import settings
from app.core.database import Base, engine
from app.models.chat_history import ChatHistory
from app.models.user_session import UserSession
from app.models.feedback import Feedback
from app.api.chat import router as chat_router
from app.api.feedback import router as feedback_router
from app.api.dashboard import router as dashboard_router
from app.api.pages import router as pages_router
from app.api.admin import router as admin_router
from app.api.auth import router as auth_router

Base.metadata.create_all(bind=engine)

BASE_DIR = Path(__file__).resolve().parent
STATIC_DIR = BASE_DIR / "static"

app = FastAPI(
    title=settings.APP_NAME
)

app.mount("/static", StaticFiles(directory=str(STATIC_DIR)), name="static")

app.add_middleware(SessionMiddleware, secret_key="super-secret-key-change-this")

app.include_router(chat_router, prefix="/api")
app.include_router(feedback_router, prefix="/api")
app.include_router(dashboard_router, prefix="/api")
app.include_router(admin_router, prefix="/api")
app.include_router(pages_router)
app.include_router(auth_router)