| 7 | |
| 8 | |
| 9 | class Settings(BaseSettings): |
| 10 | model_config = SettingsConfigDict( |
| 11 | validate_default=False, env_file=".env", env_file_encoding="utf-8", extra="ignore" |
| 12 | ) |
| 13 | environment: Env = Field(default=Env.PRODUCTION, validation_alias="ENVIRONMENT") |
| 14 | sqlalchemy_database_uri: str = Field(default="", validation_alias="SQLALCHEMY_DATABASE_URI") |
| 15 | x_api_key: str = Field(default="0077012a-8ae6-4fd8-b701-2a8ae64fd882", validation_alias="X_API_KEY") |
| 16 | jwt_public_key: str = Field(default="", validation_alias="JWT_PUBLIC_KEY") |
| 17 | jwt_private_key: str = Field(default="", validation_alias="JWT_PRIVATE_KEY") |
| 18 | jwt_algorithm: str = Field(default="RS256", validation_alias="JWT_ALGORITHM") |
| 19 | jwt_access_token_exp_h: int = Field(default=8, validation_alias="JWT_ACCESS_EXPIRATION_HOURS") |
| 20 | jwt_refresh_token_exp_h: int = Field(default=24, validation_alias="JWT_REFRESH_EXPIRATION_HOURS") |
| 21 | jwt_confirm_token_exp_h: int = Field(default=24, validation_alias="JWT_CONFIRM_EXPIRATION_HOURS") |
| 22 | smtp_server: str = Field(default="", validation_alias="SMTP_SERVER") |
| 23 | smtp_port: int = Field(default=0, validation_alias="SMTP_PORT") |
| 24 | app_password: str = Field(default="", validation_alias="APP_PASSWORD") |
| 25 | from_email: str = Field(default="", validation_alias="FROM_EMAIL") |
| 26 | app_url: str = Field(default="", validation_alias="APP_URL") |
| 27 | |
| 28 | app_name: str = Field(default="App", validation_alias="APP_NAME") |
| 29 | service_name: str = Field(default="api", validation_alias="SERVICE_NAME") |
| 30 | loki_url: str = Field(default="", validation_alias="LOKI_URL") |
| 31 | loki_enabled: bool = Field(default=False, validation_alias="LOKI_ENABLED") |
| 32 | log_request: bool = Field(default=False, validation_alias="LOG_REQUEST") |
| 33 | |
| 34 | rabbitmq_url: str = Field(default="amqp://guest:guest@localhost/", validation_alias="RABBITMQ_URL") |
| 35 | |
| 36 | cors_allow_origins: list[str] = Field(default=["*"], validation_alias="CORS_ALLOW_ORIGINS") |
| 37 | cors_allow_credentials: bool = Field(default=True, validation_alias="CORS_ALLOW_CREDENTIALS") |
| 38 | cors_allow_methods: list[str] = Field(default=["*"], validation_alias="CORS_ALLOW_METHODS") |
| 39 | cors_allow_headers: list[str] = Field(default=["*"], validation_alias="CORS_ALLOW_HEADERS") |
| 40 | cors_expose_headers: list[str] = Field(default=["*"], validation_alias="CORS_EXPOSE_HEADERS") |
| 41 | |
| 42 | slowapi_limit_enabled: bool = Field(default=True, validation_alias="REQUEST_LIMITER_ENABLED") |
| 43 | slowapi_default_limits: list[str] = Field(default=["30/minute"], validation_alias="REQUEST_LIMITER_DEFAULT_LIMITS") |
| 44 | |
| 45 | |
| 46 | app_config = Settings() # type: ignore |