import os from pathlib import Path from typing import Dict, Any import logging # Setup logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Application environment APP_ENV = os.getenv("APP_ENV", "development") # 'development', 'production', 'testing' # Database settings DB_CONNECT_RETRY = int(os.getenv("DB_CONNECT_RETRY", "3")) DB_CONNECT_RETRY_DELAY = int(os.getenv("DB_CONNECT_RETRY_DELAY", "1")) # seconds # Container settings CONTAINER_DB_PATH = os.getenv("CONTAINER_DB_PATH", "/app/storage/db") # Health check settings HEALTH_CHECK_INCLUDE_DB = ( os.getenv("HEALTH_CHECK_INCLUDE_DB", "false").lower() == "true" ) HEALTH_CHECK_PATH = os.getenv("HEALTH_CHECK_PATH", "/health") DETAILED_HEALTH_CHECK_PATH = os.getenv("DETAILED_HEALTH_CHECK_PATH", "/health/detailed") # Application settings DEBUG = os.getenv("DEBUG", "true").lower() == "true" HOST = os.getenv("HOST", "0.0.0.0") PORT = int(os.getenv("PORT", "8000")) # CORS settings CORS_ORIGINS = os.getenv("CORS_ORIGINS", "*").split(",") # API settings API_PREFIX = os.getenv("API_PREFIX", "") API_TITLE = os.getenv("API_TITLE", "Todo List API") API_DESCRIPTION = os.getenv( "API_DESCRIPTION", "A simple Todo List API built with FastAPI" ) API_VERSION = os.getenv("API_VERSION", "0.1.0") # Get project root directory for local development PROJECT_ROOT = Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # Log important configuration settings logger.info(f"Running in {APP_ENV} mode") logger.info(f"API will be available at {HOST}:{PORT}") logger.info(f"Health check path: {HEALTH_CHECK_PATH}") logger.info(f"Detailed health check path: {DETAILED_HEALTH_CHECK_PATH}") # Function to get all config as a dict (useful for debugging) def get_settings() -> Dict[str, Any]: """Return all configuration settings as a dictionary.""" return { "APP_ENV": APP_ENV, "DEBUG": DEBUG, "HOST": HOST, "PORT": PORT, "API_PREFIX": API_PREFIX, "API_TITLE": API_TITLE, "API_VERSION": API_VERSION, "HEALTH_CHECK_PATH": HEALTH_CHECK_PATH, "DETAILED_HEALTH_CHECK_PATH": DETAILED_HEALTH_CHECK_PATH, "HEALTH_CHECK_INCLUDE_DB": HEALTH_CHECK_INCLUDE_DB, "DB_CONNECT_RETRY": DB_CONNECT_RETRY, "DB_CONNECT_RETRY_DELAY": DB_CONNECT_RETRY_DELAY, "CORS_ORIGINS": CORS_ORIGINS, }