app.storage.postgres.models
SQLAlchemy ORM models of the PostgreSQL catalog store.
The schema is owned by the Alembic migrations (alembic/versions);
these classes only mirror it for querying and are never used to create
tables outside tests. Triggers (search vector, append-only decisions)
and column comments live in the migration only.
Public API: SourceRegistrationRow, RevisionRow,
RecordRow, DecisionEventRow, IntakeRunRow.
-
class app.storage.postgres.models.SourceRegistrationRow(**kwargs)
Bases: Base
A source registration synced from catalog.yaml.
-
id: Mapped[str]
-
type: Mapped[str]
-
config: Mapped[Any]
-
enabled: Mapped[bool]
-
config_error: Mapped[str | None]
-
last_attempt_at: Mapped[datetime | None]
-
last_success_at: Mapped[datetime | None]
-
last_status: Mapped[str]
-
last_error: Mapped[Any]
-
class app.storage.postgres.models.RevisionRow(**kwargs)
Bases: Base
An immutable content-addressed snapshot.
-
digest: Mapped[str]
-
content: Mapped[str]
-
created_at: Mapped[datetime]
-
class app.storage.postgres.models.RecordRow(**kwargs)
Bases: Base
A published or candidate ADR record.
-
id: Mapped[UUID]
-
kind: Mapped[str]
-
source_id: Mapped[str]
-
project: Mapped[str]
-
path: Mapped[str]
-
ref: Mapped[str]
-
adr_uuid: Mapped[UUID | None]
-
record_key: Mapped[str]
-
digest: Mapped[str]
-
previous_digest: Mapped[str | None]
-
change_token: Mapped[str | None]
-
metadata_: Mapped[Any]
-
title: Mapped[str]
-
title_source: Mapped[str]
-
decision_date: Mapped[date | None]
-
decision_date_inferred: Mapped[bool]
-
record_kind: Mapped[str]
-
links: Mapped[Any]
-
rendered_html: Mapped[str]
-
erratum: Mapped[Any]
-
issues: Mapped[Any]
-
source_url: Mapped[str | None]
-
author: Mapped[str | None]
-
search: Mapped[str]
-
first_seen_at: Mapped[datetime]
-
updated_at: Mapped[datetime]
-
last_seen_at: Mapped[datetime]
-
class app.storage.postgres.models.DecisionEventRow(**kwargs)
Bases: Base
An append-only formal decision on one content digest.
-
id: Mapped[UUID]
-
source_id: Mapped[str]
-
project: Mapped[str]
-
record_key: Mapped[str]
-
adr_uuid: Mapped[UUID]
-
digest: Mapped[str]
-
action: Mapped[str]
-
actor_issuer: Mapped[str]
-
actor_subject: Mapped[str]
-
actor_display: Mapped[str | None]
-
actor_email: Mapped[str | None]
-
policy_id: Mapped[str]
-
policy_version: Mapped[int]
-
provenance: Mapped[Any]
-
created_at: Mapped[datetime]
-
class app.storage.postgres.models.IntakeRunRow(**kwargs)
Bases: Base
One poll or push intake run.
-
id: Mapped[UUID]
-
source_id: Mapped[str]
-
kind: Mapped[str]
-
identity: Mapped[Any]
-
delivery_id: Mapped[str | None]
-
started_at: Mapped[datetime]
-
finished_at: Mapped[datetime | None]
-
status: Mapped[str]
-
counts: Mapped[Any]
-
errors: Mapped[Any]