from pathlib import Path from typing import Annotated from fastapi import Depends, FastAPI, Request, WebSocket from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from app.auth import get_or_create_user from app.handlers import IndexHandler, WebSocketHandler from app.models import User app = FastAPI() static_dir = Path(__file__).parent / "static" app.mount("/static", StaticFiles(directory=static_dir), name="static") @app.get("/", response_class=HTMLResponse) async def index( request: Request, user: Annotated[User, Depends(get_or_create_user)], handler: Annotated[IndexHandler, Depends(IndexHandler)], ): return await handler.handle(request, user) @app.websocket("/ws") async def websocket_endpoint( user: Annotated[User, Depends(get_or_create_user)], handler: Annotated[WebSocketHandler, Depends(WebSocketHandler)], web_socket: WebSocket, ): return await handler.handle(web_socket, user)