from decouple import config  # Import decouple for configuration management

class AppConfig:
    # FastAPI Metadata
    TITLE = config("TITLE", default="FastAPI App", cast=str)
    DESCRIPTION = config("DESCRIPTION", default="A FastAPI application", cast=str)
    VERSION = config("VERSION", default="1.0.0", cast=str)

    # FastAPI Configuration
    DEBUG = config("DEBUG", default=False, cast=bool)
    HOST = config("HOST", default="0.0.0.0", cast=str)
    PORT = config("PORT", default=9080, cast=int)

    # CORS Configuration
    ALLOWED_ORIGINS = config("ALLOWED_ORIGINS", default="*").split(",")
    ALLOWED_METHODS = config("ALLOWED_METHODS", default="*").split(",")
    ALLOWED_HEADERS = config("ALLOWED_HEADERS", default="*").split(",")
    EXPOSED_HEADERS = config("EXPOSED_HEADERS", default="").split(",")

    # Trusted Hosts Configuration
    ALLOWED_HOSTS = config("ALLOWED_HOSTS", default="localhost").split(",")

    # GZip Middleware Configuration
    GZIP_MIN_SIZE = config("GZIP_MIN_SIZE", default=1000, cast=int)

    LOG_DIR = config("LOG_DIR", default="", cast=str)
