"""Точка входа FastAPI: health + OAuth-флоу gnexus-gauth + защищённое /api."""

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from starlette.middleware.sessions import SessionMiddleware

from app.api import projects, tags, tasks
from app.auth.routes import router as auth_router
from app.config import get_settings

app = FastAPI(title="gntodo API", version="0.1.0")

# CORS: в разработке — vite dev server; в проде фронт отдаётся тем же origin через nginx.
settings = get_settings()
app.add_middleware(
    CORSMiddleware,
    allow_origins=["http://localhost:15134"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)
# Сессия — подписанная cookie (HttpOnly); секрет из окружения.
app.add_middleware(SessionMiddleware, secret_key=settings.session_secret)

app.include_router(auth_router)
app.include_router(tasks.router)
app.include_router(projects.router)
app.include_router(tags.router)


@app.get("/api/health")
async def health() -> dict[str, str]:
    return {"status": "ok"}
