"""FastAPI 应用入口。"""
from fastapi import FastAPI, Depends
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from pathlib import Path

from .database import init_db
from .deps import get_user_from_api_key
from .schemas import MeOut, UserOut
from .routers import auth, apikeys
from . import ws

app = FastAPI(title="Pica Gateway", version="0.1.0")

# 路由
app.include_router(auth.router)
app.include_router(apikeys.router)
app.include_router(ws.router)  # WebSocket 文本转发


@app.on_event("startup")
def on_startup():
    init_db()


@app.get("/api/me", response_model=MeOut)
def me(user=Depends(get_user_from_api_key)):
    """示例：用 X-API-Key 访问的受保护接口。"""
    return MeOut(user=UserOut(id=user.id, username=user.username),
                 message="API Key 鉴权通过")


@app.get("/health")
def health():
    return {"status": "ok"}


# 静态前端页面
STATIC_DIR = Path(__file__).resolve().parent.parent / "static"
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")


@app.get("/")
def index():
    return FileResponse(STATIC_DIR / "index.html")
