"""
Configuration settings for the AI Feedback FastAPI service with streaming S3 processing.
"""

import os

from pydantic_settings import BaseSettings


class Settings(BaseSettings):
    """Application settings."""

    # Database settings
    ENV_DATABASE_HOST: str = os.getenv("ENV_DATABASE_HOST", "localhost")
    ENV_DATABASE_PORT: int = int(os.getenv("ENV_DATABASE_PORT", "3306"))
    ENV_DATABASE_USERNAME: str = os.getenv("ENV_DATABASE_USERNAME", "root")
    ENV_DATABASE_PASSWORD: str = os.getenv("ENV_DATABASE_PASSWORD", "")
    ENV_DATABASE_NAME: str = os.getenv("ENV_DATABASE_NAME", "mip_legacy")

    # Secrets Manager settings
    USE_SECRETS_MANAGER: bool = True
    DB_SECRET_NAME: str = os.getenv("DB_SECRET_NAME", "DB_CREDENTIALS")

    # AWS settings
    AWS_ACCESS_KEY_ID: str | None = os.getenv("AWS_ACCESS_KEY_ID")
    AWS_SECRET_ACCESS_KEY: str | None = os.getenv("AWS_SECRET_ACCESS_KEY")
    AWS_REGION: str = os.getenv("AWS_REGION", "us-east-1")
    AWS_S3_BUCKET: str = os.getenv("AWS_S3_BUCKET", "pub.myinterviewpractice.com")

    # Application settings
    DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true"
    ENVIRONMENT: str = os.getenv("ENVIRONMENT", "development")
    LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")

    # Queue processing settings (8GB RAM optimized)
    MAX_CONCURRENT_JOBS: int = int(os.getenv("MAX_CONCURRENT_JOBS", "3"))

    # Sentry settings
    SENTRY_DSN: str | None = os.getenv("SENTRY_DSN")
    SENTRY_ENVIRONMENT: str = os.getenv("SENTRY_ENVIRONMENT", "development")
    SENTRY_ENABLE_DEBUG: bool = (
        os.getenv("SENTRY_ENABLE_DEBUG", "false").lower() == "true"
    )

    class Config:
        env_file = ".env"
        case_sensitive = True


# Create global settings instance
settings = Settings()
