Skip to content

InMemoryQuery

Defined in: src/persistence/query/InMemoryQuery.ts:36

Reference query implementation that walks any Journal via its public read API. No backend-specific tag index — scans every persistence id on each poll and filters in-process. Correct for any journal, but only fast for the in-memory one (where the scan is just a Map walk).

Backends that ship a “real” tag index (SQLite via the tags column, Cassandra via secondary table) provide their own PersistenceQuery implementation that overrides the tag paths — see SqliteQuery and CassandraQuery.

Push delivery (#42). When the journal exposes a JournalEventBus (journal.events), the live eventsByX queries subscribe to it for sub-poll-interval delivery. The polling loop stays as a fallback for cross-process journals (e.g. Cassandra) where in-process notifications can’t reach every subscriber.

new InMemoryQuery(journal): InMemoryQuery

Defined in: src/persistence/query/InMemoryQuery.ts:37

Journal

InMemoryQuery

currentEventsByPersistenceId<E>(pid, fromSeq, toSeq?): Promise<PersistentEvent<E>[]>

Defined in: src/persistence/query/InMemoryQuery.ts:41

One-shot read of every event for persistenceId whose sequenceNr >= fromSeq (and <= toSeq if given). Resolves once with the events known at call time.

E

string

number

number

Promise<PersistentEvent<E>[]>

PersistenceQuery.currentEventsByPersistenceId


currentEventsByTag<E>(filter, fromOffset): Promise<TaggedEvent<E>[]>

Defined in: src/persistence/query/InMemoryQuery.ts:65

One-shot read of every event matching filter whose offset is >= fromOffset. See TagFilter for the operator semantics.

E

TagFilter

Offset

Promise<TaggedEvent<E>[]>

PersistenceQuery.currentEventsByTag


currentPersistenceIds(): Promise<string[]>

Defined in: src/persistence/query/InMemoryQuery.ts:107

Snapshot of every persistence id known to the journal. Resolves once. Useful for fan-out projections that subscribe to one stream per id; pair with eventsByPersistenceId for the continuous read.

Promise<string[]>

PersistenceQuery.currentPersistenceIds


eventsByPersistenceId<E>(pid, fromSeq, options?): AsyncIterable<PersistentEvent<E>>

Defined in: src/persistence/query/InMemoryQuery.ts:47

Live stream of every event for persistenceId whose sequenceNr >= fromSeq. Past events are emitted first (chronological by sequenceNr), then new events as they are appended. The stream never completes on its own — break out of the loop or call return() on the iterator to stop polling.

E

string

number

LiveQueryOptions = {}

AsyncIterable<PersistentEvent<E>>

PersistenceQuery.eventsByPersistenceId


eventsByTag<E>(filter, fromOffset, options?): AsyncIterable<TaggedEvent<E>>

Defined in: src/persistence/query/InMemoryQuery.ts:84

Live stream of every event matching filter whose offset is >= fromOffset. Yields events ordered by (timestamp, persistenceId, sequenceNr). See Offset for offset semantics — the stream emits the offset alongside the event so the consumer can persist progress.

filter accepts either a single tag string (back-compat shortcut for { all: [tag] }) or a TagFilter object that combines all (intersect), any (union), and not (exclusion) operators.

E

TagFilter

Offset

LiveQueryOptions = {}

AsyncIterable<TaggedEvent<E>>

PersistenceQuery.eventsByTag