1
0
mirror of https://github.com/ijaric/voice_assistant.git synced 2025-05-24 14:33:26 +00:00
voice_assistant/src/fastapi_app/lib/app/settings.py

36 lines
1.2 KiB
Python

import functools
import pydantic
import pydantic_settings
class DbSettings(pydantic_settings.BaseSettings):
host: str = pydantic.Field("127.0.0.1", validation_alias="db_host")
port: int = pydantic.Field(5432, validation_alias="db_port")
user: str = pydantic.Field(..., validation_alias="db_user")
password: str = pydantic.Field(..., validation_alias="db_password")
name: str = pydantic.Field("db_name", validation_alias="db_name")
class ApiSettings(pydantic_settings.BaseSettings):
host: str = pydantic.Field("0.0.0.0", validation_alias="server_host")
port: int = pydantic.Field(8000, validation_alias="server_port")
class Settings(pydantic_settings.BaseSettings):
debug: str = pydantic.Field("false", validation_alias="debug")
db: DbSettings = pydantic.Field(default_factory=lambda: DbSettings())
api: ApiSettings = pydantic.Field(default_factory=lambda: ApiSettings())
jwt_secret_key: str = pydantic.Field(..., validation_alias="jwt_secret_key")
@pydantic.field_validator("debug")
@classmethod
def validate_debug(cls, v: str) -> bool:
return v.lower() == "true"
@functools.lru_cache
def get_settings() -> Settings:
return Settings()