"""앱 진입점. python -m app.main 으로 실행합니다."""
from contextlib import asynccontextmanager

from fastapi import FastAPI
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles

from .config import DATA_DIR, HOST, PORT, WEB_DIR, public_base_url
from .routes import router
from . import storage


@asynccontextmanager
async def lifespan(app: FastAPI):
    DATA_DIR.mkdir(parents=True, exist_ok=True)
    storage.purge_old()
    yield


app = FastAPI(title="인생네컷 부스", lifespan=lifespan)
app.include_router(router)
app.mount("/static", StaticFiles(directory=WEB_DIR), name="static")


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


@app.get("/health")
def health():
    return {"ok": True, "public_url": public_base_url()}


if __name__ == "__main__":
    import uvicorn

    print("촬영 화면 : http://localhost:{}".format(PORT))
    print("QR 주소   : {}".format(public_base_url()))
    uvicorn.run("app.main:app", host=HOST, port=PORT, log_level="info")
