import os
from pathlib import Path

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

from .routers import admin, auth, board
from .db import Base, engine, ensure_schema


def create_app() -> FastAPI:
    app = FastAPI(title="Kanban Projects")

    Base.metadata.create_all(bind=engine)
    ensure_schema()
    Path("app/static/uploads/profiles").mkdir(parents=True, exist_ok=True)

    secret_key = os.environ.get("SECRET_KEY", "dev-secret-change-me")
    app.add_middleware(SessionMiddleware, secret_key=secret_key)

    app.include_router(auth.router)
    app.include_router(board.router)
    app.include_router(admin.router)

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

    return app


app = create_app()
