71 lines
2.3 KiB
Python
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,
|
|
}
|