"""Direct PostgreSQL implementation of the DWH port.""" from tht.config import DatabaseConfig from tht.db import execute from tht.db.connection import make_engine, ping from tht.db.introspect import introspect from tht.execute import ExecResult, PlanSummary from tht.mschema.models import PhysicalSchema from tht.ports.dwh import DwhCapabilities, DwhHealth class PostgresDwhAdapter: capabilities = DwhCapabilities() def __init__(self, config: DatabaseConfig): self._config = config self._engine = make_engine(config) def health(self) -> DwhHealth: try: ping(self._engine) except Exception as exc: return DwhHealth(ok=False, detail=str(exc)) return DwhHealth(ok=True) def introspect(self) -> PhysicalSchema: return introspect(self._engine, self._config.database, self._config.db_schema) def run_query(self, sql: str, *, limit: int | None = None) -> ExecResult: return execute.run_query(self._engine, sql, limit=limit) def explain(self, sql: str) -> PlanSummary: return execute.explain(self._engine, sql) def sample_column(self, table: str, column: str, *, limit: int) -> list[object]: return execute.sample_column( self._engine, self._config.db_schema, table, column, limit=limit ) def distinct_values(self, table: str, column: str) -> list[object]: return execute.distinct_values(self._engine, self._config.db_schema, table, column)