import os import logging from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .models.database import init_db from .api.videos import router as videos_router from .api.jobs import router as jobs_router from .config import settings logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", ) @asynccontextmanager async def lifespan(app: FastAPI): os.makedirs(settings.video_dir, exist_ok=True) os.makedirs(settings.app_data_dir, exist_ok=True) os.makedirs(settings.temp_dir, exist_ok=True) await init_db() yield app = FastAPI(title="B\u00f8rnetime", version="1.0.0", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(videos_router, prefix="/api/videos", tags=["videos"]) app.include_router(jobs_router, prefix="/api/jobs", tags=["jobs"]) @app.get("/api/health") async def health(): return {"status": "ok"}