PostgresJournal
此内容尚不支持你的语言。
Defined in: src/persistence/journals/PostgresJournal.ts:50
Journal backed by PostgreSQL via the pg (node-postgres) driver.
Mirrors SqliteJournal’s shape — an events table keyed on
(persistence_id, sequence_nr) plus a tags join table for indexed
tag queries — using Postgres types and $1 bind parameters.
Optimistic concurrency: append runs SELECT MAX(sequence_nr) and the
INSERTs inside one transaction; a racing writer that slips between the
read and the insert trips the primary-key unique constraint (SQLSTATE
23505), which is translated to JournalConcurrencyError as a
backstop. Construction is lazy — the pool opens and tables are created
on the first call.
No in-process event bus: Postgres is a cross-process backend (like
Cassandra), so the events field is left undefined and the query layer
falls back to polling. (A LISTEN/NOTIFY bus is a possible future
enhancement.)
Implements
Section titled “Implements”Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new PostgresJournal(
options?):PostgresJournal
Defined in: src/persistence/journals/PostgresJournal.ts:60
Parameters
Section titled “Parameters”options?
Section titled “options?”Returns
Section titled “Returns”PostgresJournal
Methods
Section titled “Methods”append()
Section titled “append()”append<
E>(pid,events,expectedSeq,tags?):Promise<PersistentEvent<E>[]>
Defined in: src/persistence/journals/PostgresJournal.ts:69
Append events to the stream of pid, enforcing optimistic concurrency:
the current highest sequence number MUST equal expectedSeq or the
call throws JournalConcurrencyError. Returns the written events
with their assigned sequence numbers.
Type Parameters
Section titled “Type Parameters”E
Parameters
Section titled “Parameters”string
events
Section titled “events”readonly E[]
expectedSeq
Section titled “expectedSeq”number
readonly string[]
Returns
Section titled “Returns”Promise<PersistentEvent<E>[]>
Implementation of
Section titled “Implementation of”close()
Section titled “close()”close():
Promise<void>
Defined in: src/persistence/journals/PostgresJournal.ts:188
Best-effort teardown; idempotent.
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”delete()
Section titled “delete()”delete(
pid,toSeq):Promise<void>
Defined in: src/persistence/journals/PostgresJournal.ts:167
Delete events up to and including toSeq — used when compacting past a snapshot.
Parameters
Section titled “Parameters”string
number
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”highestSeq()
Section titled “highestSeq()”highestSeq(
pid):Promise<number>
Defined in: src/persistence/journals/PostgresJournal.ts:158
Current highest sequence number for pid — 0 if no events exist.
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<number>
Implementation of
Section titled “Implementation of”persistenceIds()
Section titled “persistenceIds()”persistenceIds():
Promise<string[]>
Defined in: src/persistence/journals/PostgresJournal.ts:182
Persistence IDs currently known to the journal (useful for projections).
Returns
Section titled “Returns”Promise<string[]>
Implementation of
Section titled “Implementation of”read()
Section titled “read()”read<
E>(pid,fromSeq,toSeq?):Promise<PersistentEvent<E>[]>
Defined in: src/persistence/journals/PostgresJournal.ts:134
Return events in (fromSeq, …, toSeq] order. toSeq defaults to
the current highest sequence number. Inclusive bounds — fromSeq
is the first event returned, not the “after” cursor.
Type Parameters
Section titled “Type Parameters”E
Parameters
Section titled “Parameters”string
fromSeq
Section titled “fromSeq”number
toSeq?
Section titled “toSeq?”number
Returns
Section titled “Returns”Promise<PersistentEvent<E>[]>