Class

ObserverHandler

ObserverHandler()

Constructor

# new ObserverHandler()

The ObserverHandler class implements the Observable interface and provides a centralized way to manage multiple observers. It allows registering observers with optional filters to control which events they receive notifications for, and handles the process of notifying all relevant observers when database events occur.

Manages a collection of observers for database events

View Source persistence/ObserverHandler.ts, line 3

Example
```typescript
// Create an observer handler
const handler = new ObserverHandler();

// Register an observer
const myObserver = {
  refresh: async (table, event, id) => {
    console.log(`Change in ${table}: ${event} for ID ${id}`);
  }
};

// Add observer with a filter for only user table events
handler.observe(myObserver, (table, event, id) => table === 'users');

// Notify observers about an event
await handler.updateObservers(logger, 'users', 'CREATE', 123);

// Remove an observer when no longer needed
handler.unObserve(myObserver);
```

Members

# observers

Array of observer objects along with their optional filters

Collection of registered observers

View Source persistence/ObserverHandler.ts, line 37

Array

# protected observers

Array of observer objects along with their optional filters

Collection of registered observers

View Source persistence/ObserverHandler.ts, line 148

Methods

# count() → {number}

Returns the count of observers currently registered with this handler

Gets the number of registered observers

View Source persistence/ObserverHandler.ts, line 155

The number of registered observers

number

# observe(observer, filteropt) → {void}

Adds an observer to the collection with an optional filter function

Registers a new observer

Parameters:
Name Type Attributes Description
observer Observer

The observer to register

filter ObserverFilter <optional>

Optional filter function to determine which events the observer receives

View Source persistence/ObserverHandler.ts, line 164

void

# unObserve(observer) → {void}

Removes an observer from the collection

Unregisters an observer

Parameters:
Name Type Description
observer Observer

The observer to unregister

View Source persistence/ObserverHandler.ts, line 172

void

# async updateObservers(log, table, event, id, …args) → {Promise.<void>}

Filters observers based on their filter functions and calls refresh on each matching observer

Notifies all relevant observers about a database event

sequenceDiagram participant Client participant ObserverHandler participant Observer Client->>ObserverHandler: updateObservers(log, table, event, id, ...args) ObserverHandler->>ObserverHandler: Filter observers loop For each observer with matching filter alt Observer has filter ObserverHandler->>Observer: Apply filter(table, event, id) alt Filter throws error ObserverHandler->>Logger: Log error ObserverHandler-->>ObserverHandler: Skip observer else Filter returns true ObserverHandler->>Observer: refresh(table, event, id, ...args) else Filter returns false ObserverHandler-->>ObserverHandler: Skip observer end else No filter ObserverHandler->>Observer: refresh(table, event, id, ...args) end end ObserverHandler->>ObserverHandler: Process results loop For each result alt Result is rejected ObserverHandler->>Logger: Log error end end ObserverHandler-->>Client: Return
Parameters:
Name Type Attributes Description
log Logger

Logger for recording notification activities

table string

The name of the table where the event occurred

event OperationKeys | BulkCrudOperationKeys | string

The type of operation that occurred

id EventIds

The identifier(s) of the affected record(s)

args Array.<any> <repeatable>

Additional arguments to pass to the observers

View Source persistence/ObserverHandler.ts, line 219

A promise that resolves when all observers have been notified

Promise.<void>