"""PostgreSQL connection configuration.""" from __future__ import annotations from dataclasses import dataclass import os from python_utils import check_env from python_repositories.config.dotenv_loader import load_dotenv @dataclass(frozen=True) class PostgresConfig: """Configuration for connecting to PostgreSQL.""" uri: str table: str primary_key: str = "id" @classmethod def from_env( cls, uri_env_var_name: str = "POSTGRES_URI", table_env_var_name: str = "POSTGRES_TABLE", primary_key_env_var_name: str = "POSTGRES_PRIMARY_KEY", *, use_dotenv: bool = True, ) -> PostgresConfig: """Load configuration from environment variables.""" if use_dotenv: load_dotenv() env_var_names = {uri_env_var_name, table_env_var_name} check_env(env_var_names) primary_key = os.getenv(primary_key_env_var_name) if primary_key is None or primary_key == "": primary_key = "id" return cls( uri=str(os.getenv(uri_env_var_name)), table=str(os.getenv(table_env_var_name)), primary_key=primary_key, )