"""Einstiegspunkt der Anwendung. FastAPI liefert später sowohl die REST-API als auch die gerenderten Seiten aus - ein Dienst, eine Datenbank, kein getrenntes Frontend (Variante A aus Plan.md). """ from contextlib import asynccontextmanager from fastapi import FastAPI from app.config import einstellungen from app.database import SessionLocal, engine from app.routers import categories, images, items from app.seed import stammdaten_anlegen @asynccontextmanager async def lebenszyklus(_app: FastAPI): # Die Tabellen legt Alembic an (alembic upgrade head). Hier werden nur # die Stammdaten ergänzt, damit eine frische Datenbank sofort brauchbar # ist - Kategorien und Grössen sind Voraussetzung fürs Erfassen. cfg = einstellungen() cfg.upload_pfad.mkdir(parents=True, exist_ok=True) with SessionLocal() as db: stammdaten_anlegen(db) yield engine.dispose() app = FastAPI( title="Kinderkleider-Börse", description="Zu klein gewordene Kinderkleidung katalogisieren und weitergeben.", version="0.1.0", lifespan=lebenszyklus, ) app.include_router(categories.router) app.include_router(items.router) app.include_router(images.router) @app.get("/health", tags=["Betrieb"]) def health(): """Wird vom Docker-Healthcheck und von der CI benutzt.""" return {"status": "ok"}