from decouple import config
from typing import List

class Settings:
    # MongoDB
    mongodb_url: str = config('MONGODB_URL', default='mongodb://admin:password@localhost:27017')
    db_name: str = config('DB_NAME', default='mana_pige_db')
    
    # Redis
    redis_url: str = config('REDIS_URL', default='redis://localhost:6379')
    
    # Kafka
    kafka_bootstrap_servers: str = config('KAFKA_BOOTSTRAP_SERVERS', default='localhost:9092')
    
    # JWT
    secret_key: str = config('SECRET_KEY', default='your-secret-key-change-in-production-please-make-it-secure')
    algorithm: str = config('ALGORITHM', default='HS256')
    access_token_expire_minutes: int = config('ACCESS_TOKEN_EXPIRE_MINUTES', default=30, cast=int)
    refresh_token_expire_days: int = config('REFRESH_TOKEN_EXPIRE_DAYS', default=7, cast=int)
    
    # Services URLs
    auth_service_url: str = config('AUTH_SERVICE_URL', default='http://localhost:8001')
    account_service_url: str = config('ACCOUNT_SERVICE_URL', default='http://localhost:8002')
    
    # Security
    bcrypt_rounds: int = config('BCRYPT_ROUNDS', default=12, cast=int)
    max_login_attempts: int = config('MAX_LOGIN_ATTEMPTS', default=5, cast=int)
    account_lockout_duration: int = config('ACCOUNT_LOCKOUT_DURATION', default=900, cast=int)
    
    # CORS
    allowed_origins: List[str] = config('ALLOWED_ORIGINS', default='http://localhost:3000,http://127.0.0.1:3000').split(',')
    
    # Rate limiting
    rate_limit_requests: int = config('RATE_LIMIT_REQUESTS', default=100, cast=int)
    rate_limit_period: int = config('RATE_LIMIT_PERIOD', default=60, cast=int)
    
    # Email Configuration
    smtp_host: str = config('SMTP_HOST', default='smtp.gmail.com')
    smtp_port: int = config('SMTP_PORT', default=587, cast=int)
    smtp_username: str = config('SMTP_USERNAME', default='')
    smtp_password: str = config('SMTP_PASSWORD', default='')
    mail_use_tls: bool = config('MAIL_USE_TLS', default=True, cast=bool)
    mail_use_ssl: bool = config('MAIL_USE_SSL', default=False, cast=bool)
    mail_default_sender: str = config('MAIL_DEFAULT_SENDER', default=config('SMTP_USERNAME', default=''))
    
    email_from: str = config('EMAIL_FROM', default='')
    email_from_name: str = config('EMAIL_FROM_NAME', default='Mana Pige')
    base_url: str = config('BASE_URL', default='http://localhost:3000')
    
    # Application
    debug: bool = config('DEBUG', default=False, cast=bool)

settings = Settings()
