from fastapi import FastAPI, Depends from sqlalchemy.orm import Session from sqlalchemy import text from app.database import get_db from app.config import settings import logging logging.basicConfig(level=settings.LOG_LEVEL) logger = logging.getLogger(__name__) app = FastAPI( title="MealPlanner", description="Self-hosted meal planning system", version="0.1.0", ) @app.get("/health") def health_check(db: Session = Depends(get_db)): return {"status": "ok"} @app.get("/health/db") def health_check_db(db: Session = Depends(get_db)): try: db.execute(text("SELECT 1")) return {"status": "ok", "database": "connected"} except Exception as e: return {"status": "error", "database": "disconnected", "error": str(e)} from app.api import profile, recipes, meals, shopping_list, pantry, admin, auth from app.api import ingredients as ingredients_api app.include_router(auth.router, prefix="/api/auth", tags=["auth"]) app.include_router(profile.router, prefix="/api/profile", tags=["profile"]) app.include_router(recipes.router, prefix="/api/recipes", tags=["recipes"]) app.include_router(meals.router, prefix="/api/meals", tags=["meals"]) app.include_router(shopping_list.router, prefix="/api/shopping-list", tags=["shopping-list"]) app.include_router(pantry.router, prefix="/api/pantry", tags=["pantry"]) app.include_router(admin.router, prefix="/api/admin", tags=["admin"]) app.include_router(ingredients_api.public_router) app.include_router(ingredients_api.admin_router)