corvix.db

SQLAlchemy ORM models and engine helpers for PostgreSQL persistence.

Classes

Base

Shared declarative base for all ORM models.

NotificationRecordRow

Persisted notification record.

PollerStatusRow

Latest poller status (single-row table, keyed by the fixed single-user UUID).

Functions

get_database_url(→ str | None)

Return DB URL from env, supporting ${URL_ENV}_FILE Docker secret files.

Module Contents

class corvix.db.Base[source][source]

Bases: sqlalchemy.orm.DeclarativeBase

Shared declarative base for all ORM models.

class corvix.db.NotificationRecordRow[source][source]

Bases: Base

Persisted notification record.

__tablename__ = 'notification_records'[source][source]
__table_args__[source][source]
id: sqlalchemy.orm.Mapped[int][source][source]
user_id: sqlalchemy.orm.Mapped[uuid.UUID][source][source]
account_id: sqlalchemy.orm.Mapped[str][source][source]
account_label: sqlalchemy.orm.Mapped[str][source][source]
thread_id: sqlalchemy.orm.Mapped[str][source][source]
repository: sqlalchemy.orm.Mapped[str][source][source]
reason: sqlalchemy.orm.Mapped[str][source][source]
subject_title: sqlalchemy.orm.Mapped[str][source][source]
subject_type: sqlalchemy.orm.Mapped[str][source][source]
unread: sqlalchemy.orm.Mapped[bool][source][source]
updated_at: sqlalchemy.orm.Mapped[datetime.datetime][source][source]
thread_url: sqlalchemy.orm.Mapped[str | None][source][source]
web_url: sqlalchemy.orm.Mapped[str | None][source][source]
score: sqlalchemy.orm.Mapped[float][source][source]
excluded: sqlalchemy.orm.Mapped[bool][source][source]
matched_rules: sqlalchemy.orm.Mapped[list[str]][source][source]
actions_taken: sqlalchemy.orm.Mapped[list[str]][source][source]
context: sqlalchemy.orm.Mapped[dict[str, object]][source][source]
dismissed: sqlalchemy.orm.Mapped[bool][source][source]
snapshot_at: sqlalchemy.orm.Mapped[datetime.datetime][source][source]
class corvix.db.PollerStatusRow[source][source]

Bases: Base

Latest poller status (single-row table, keyed by the fixed single-user UUID).

__tablename__ = 'poller_status'[source][source]
user_id: sqlalchemy.orm.Mapped[uuid.UUID][source][source]
status: sqlalchemy.orm.Mapped[str][source][source]
last_poll_time: sqlalchemy.orm.Mapped[str | None][source][source]
last_error: sqlalchemy.orm.Mapped[str | None][source][source]
last_error_time: sqlalchemy.orm.Mapped[str | None][source][source]
account_errors: sqlalchemy.orm.Mapped[list[dict[str, object]] | None][source][source]
updated_at: sqlalchemy.orm.Mapped[datetime.datetime][source][source]
corvix.db.get_database_url(url_env: str = 'DATABASE_URL') str | None[source][source]

Return DB URL from env, supporting ${URL_ENV}_FILE Docker secret files.