Add Postgres table adapter with TableRepositoryInterface.
PR Title Check / check-title (pull_request) Successful in 7s
Code Quality Pipeline / code-quality (pull_request) Failing after 19s
Test Python Package / unit-tests (pull_request) Successful in 47s
Test Python Package / integration-tests (pull_request) Successful in 44s
Test Python Package / coverage-report (pull_request) Successful in 11s
PR Title Check / check-title (pull_request) Successful in 7s
Code Quality Pipeline / code-quality (pull_request) Failing after 19s
Test Python Package / unit-tests (pull_request) Successful in 47s
Test Python Package / integration-tests (pull_request) Successful in 44s
Test Python Package / coverage-report (pull_request) Successful in 11s
Introduce PostgresAdapter for dict-based row CRUD via psycopg3, including config, lazy exports, unit/integration tests with testcontainers, and an example UserTableRepository. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
co-authored by
Cursor
parent
f28d3c4844
commit
dc6f8a3e89
@@ -0,0 +1,42 @@
|
||||
"""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,
|
||||
)
|
||||
Reference in New Issue
Block a user