MukeshKapoor25's picture
feat(config): Implement centralized configuration management system
851444b

Configuration Management

This directory contains the centralized configuration management for the MHS service, following the same pattern as the AMS service.

Files

  • config.py - Main configuration file with centralized settings
  • security_config.py - Security-specific configuration
  • nlp_config.py - NLP-specific configuration

Usage

Basic Usage

from app.config.config import settings

# Database settings
mongo_uri = settings.MONGO_URI
db_name = settings.DB_NAME

# Cache settings
cache_uri = settings.CACHE_URI
cache_key = settings.CACHE_K

# JWT settings
jwt_secret = settings.JWT_SECRET_KEY
jwt_algorithm = settings.JWT_ALGORITHM

# Generate cache keys
cart_key = settings.get_cache_key("cart", user_id, "items")
order_key = settings.get_cache_key("order", order_id)

Configuration Validation

from app.config.config import validate_configuration

# Validate configuration on startup
try:
    validate_configuration()
    print("✅ Configuration is valid")
except ValueError as e:
    print(f"❌ Configuration error: {e}")

Environment Variables

All configuration is loaded from environment variables with sensible defaults. Key variables include:

  • MONGO_URI - MongoDB connection string
  • DATABASE_URI - PostgreSQL connection string
  • CACHE_URI - Redis connection string
  • CACHE_K - Redis password
  • JWT_SECRET_KEY - JWT signing secret
  • RAZORPAY_KEY_ID - Payment gateway key
  • RAZORPAY_KEY_SECRET - Payment gateway secret
  • CORS_ORIGINS - Allowed CORS origins
  • ALLOWED_HOSTS - Allowed hosts

Migration from Direct os.getenv()

Instead of:

import os
mongo_uri = os.getenv("MONGO_URI")

Use:

from app.config.config import settings
mongo_uri = settings.MONGO_URI

This provides:

  • Type safety
  • Default values
  • Validation
  • Centralized configuration
  • Better error handling