from pydantic import Field from pydantic_settings import BaseSettings class Settings(BaseSettings): env: str = Field(default='DEV', alias="ENV") # Server settings host: str = Field(default="0.0.0.0", alias="HOST") port: int = Field(default=8000, alias="PORT") debug: bool = Field(default=False, alias="DEBUG") log_level: str = Field(default="INFO", alias="LOG_LEVEL") # Database settings oracle_user: str = Field(alias="ORACLE_USER") oracle_password: str = Field(alias="ORACLE_PASSWORD") oracle_dsn: str = Field(alias="ORACLE_DSN") # Sentry settings sentry_dsn: str | None = Field(default=None, alias="SENTRY_DSN") # Datadog settings dd_service: str = Field(default="loapi", alias="DD_SERVICE") dd_env: str = Field(default="development", alias="DD_ENV") dd_version: str = Field(default="1.0.0", alias="DD_VERSION") # Rate limiting settings rate_limit_enabled: bool = Field(default=True, alias="RATE_LIMIT_ENABLED") rate_limit_requests: int = Field(default=100, alias="RATE_LIMIT_REQUESTS") rate_limit_period: str = Field(default="1/minute", alias="RATE_LIMIT_PERIOD") class Config: env_file = ".env" case_sensitive = False settings = Settings() # type:ignore[call-arg]