2025-06-02 18:32:05 +00:00

71 lines
2.3 KiB
Python

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,
}