Skip to main content

EventRepository

@webda/core


Class: EventRepository<T>

Defined in: packages/models/lib/repositories/event.d.ts:16

Repository decorator that wraps another repository with event emission.

Emits "before" events (Create, Update, Patch, Delete, PartialUpdate, Query) before delegating to the underlying repository, then emits "after" events (Created, Updated, Patched, Deleted, PartialUpdated, Queried) on success.

Extends​

  • AbstractRepository<T>

Type Parameters​

T​

T extends ModelClass = any

The ModelClass this repository manages

Constructors​

Constructor​

new EventRepository<T>(model, pks, repository, separator?): EventRepository<T>

Defined in: packages/models/lib/repositories/event.d.ts:24

Parameters​

model​

T

The model class constructor

pks​

string[]

Array of primary key field names

repository​

AbstractRepository<T>

The underlying repository to delegate storage operations to

separator?​

string

Separator used when joining composite key fields (default: "_")

Returns​

EventRepository<T>

Overrides​

AbstractRepository<T>.constructor

Properties​

[WEBDA_TEST]​

[WEBDA_TEST]: object

Defined in: packages/models/lib/repositories/event.d.ts:97

Test utilities - clears events and delegates to underlying repository

clear​

clear: (excludeListeners?) => Promise<void>

Parameters​
excludeListeners?​

boolean

Returns​

Promise<void>


events​

protected events: Map<keyof InstanceType<T>[typeof WEBDA_EVENTS], Set<(data) => void>>

Defined in: packages/models/lib/repositories/abstract.d.ts:22

Registered event listeners keyed by event name

Inherited from​

AbstractRepository.events


maxListeners​

protected maxListeners: number

Defined in: packages/models/lib/repositories/abstract.d.ts:111

Max-listeners hint kept for Node EventEmitter API compatibility. Not enforced — repositories use an unbounded Set per event.

Inherited from​

AbstractRepository.maxListeners


model​

protected model: T

Defined in: packages/models/lib/repositories/abstract.d.ts:18

Inherited from​

AbstractRepository.model


pks​

protected pks: string[]

Defined in: packages/models/lib/repositories/abstract.d.ts:19

Inherited from​

AbstractRepository.pks


repository​

protected repository: AbstractRepository<T>

Defined in: packages/models/lib/repositories/event.d.ts:17


separator​

protected separator: string

Defined in: packages/models/lib/repositories/abstract.d.ts:20

Inherited from​

AbstractRepository.separator

Methods​

buildItem()​

protected buildItem(data): InstanceType<T>

Defined in: packages/models/lib/repositories/abstract.d.ts:41

Build the model instance to create from the incoming data

Primary key fields that are undefined or null are dropped from the data so a key generated by the model constructor (e.g. UuidModel) is not overwritten. Repositories must read the storage key from the returned instance.

Parameters​

data​

Helpers<InstanceType<T>>

the incoming data

Returns​

InstanceType<T>

the model instance

Inherited from​

AbstractRepository.buildItem


create()​

create(data, save?): Promise<InstanceType<T>>

Defined in: packages/models/lib/repositories/event.d.ts:78

Create with event emission (emits Create before and Created after)

Parameters​

data​

Helpers<InstanceType<T>>

save?​

boolean

Returns​

Promise<InstanceType<T>>

Overrides​

AbstractRepository.create


delete()​

delete<K>(uuid, conditionField?, condition?): Promise<void>

Defined in: packages/models/lib/repositories/event.d.ts:93

Delete with event emission (emits Delete before and Deleted after)

Type Parameters​

K​

K extends string

Parameters​

uuid​

PrimaryKeyType<InstanceType<T>>

conditionField?​

K

condition?​

PropertyPathType<InstanceType<T>, K> | JSONed<PropertyPathType<InstanceType<T>, K>>

Returns​

Promise<void>

Overrides​

AbstractRepository.delete


deleteItemFromCollection()​

deleteItemFromCollection<K, L>(uuid, collection, index, itemWriteConditionField?, itemWriteCondition?): Promise<void>

Defined in: packages/models/lib/repositories/event.d.ts:61

Delete an item from a collection

Type Parameters​

K​

K extends string

L​

L extends string | number | symbol

Parameters​

uuid​

PrimaryKeyType<InstanceType<T>>

The UUID of the item

collection​

K

The collection to delete from

index​

number

The index of the item to delete

itemWriteConditionField?​

L

The field to use for the write condition

itemWriteCondition?​

ArrayElement<InstanceType<T>[K]>[L]

The value to use for the write condition

Returns​

Promise<void>

Overrides​

AbstractRepository.deleteItemFromCollection


emit()​

emit<K>(event, data): Promise<void>

Defined in: packages/models/lib/repositories/abstract.d.ts:136

Emit an event to all registered listeners and await their completion.

Type Parameters​

K​

K extends string | number | symbol

Parameters​

event​

K

The event name to emit

data​

InstanceType<T>[typeof WEBDA_EVENTS][K]

The event payload

Returns​

Promise<void>

Inherited from​

AbstractRepository.emit


excludePrimaryKey()​

excludePrimaryKey(object): any

Defined in: packages/models/lib/repositories/abstract.d.ts:65

Parameters​

object​

any

Returns​

any

Inherited from​

AbstractRepository.excludePrimaryKey


exists()​

exists(uuid): Promise<boolean>

Defined in: packages/models/lib/repositories/event.d.ts:95

Parameters​

uuid​

PrimaryKeyType<InstanceType<T>>

Returns​

Promise<boolean>

Overrides​

AbstractRepository.exists


fromUID()​

fromUID(uid): ModelRefWithCreate<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:47

Return a ref from the uuid

Parameters​

uid​

string

the serialized primary key

Returns​

ModelRefWithCreate<InstanceType<T>>

a model reference with create capability

Inherited from​

AbstractRepository.fromUID


get()​

get(primaryKey): Promise<HelperProperties<InstanceType<T>>>

Defined in: packages/models/lib/repositories/event.d.ts:73

Parameters​

primaryKey​

PrimaryKeyType<InstanceType<T>>

Returns​

Promise<HelperProperties<InstanceType<T>>>

Overrides​

AbstractRepository.get


getMaxListeners()​

getMaxListeners(): number

Defined in: packages/models/lib/repositories/abstract.d.ts:124

EventEmitter-compatibility shim. Returns the max-listeners hint.

Returns​

number

the current max-listeners hint

Inherited from​

AbstractRepository.getMaxListeners


getPrimaryKey()​

Call Signature​

getPrimaryKey(object, forceObject?): PrimaryKeyType<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:67

Get the primary key value for an object as a scalar or string.

Parameters​
object​

any

forceObject?​

false

Returns​

PrimaryKeyType<InstanceType<T>>

Inherited from​

AbstractRepository.getPrimaryKey

Call Signature​

getPrimaryKey(object, forceObject): PrimaryKey<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:69

Get the primary key value for an object as a structured key object.

Parameters​
object​

any

forceObject​

true

Returns​

PrimaryKey<InstanceType<T>>

Inherited from​

AbstractRepository.getPrimaryKey


getRootModel()​

getRootModel(): T

Defined in: packages/models/lib/repositories/abstract.d.ts:30

Returns​

T

Inherited from​

AbstractRepository.getRootModel


getUID()​

getUID(object): string

Defined in: packages/models/lib/repositories/abstract.d.ts:71

Parameters​

object​

any

Returns​

string

Inherited from​

AbstractRepository.getUID


incrementAttribute()​

incrementAttribute<K, L>(primaryKey, info, _conditionField?, _condition?): Promise<void>

Defined in: packages/models/lib/repositories/abstract.d.ts:79

Type Parameters​

K​

K extends string

L​

L extends string

Parameters​

primaryKey​

PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>

info​

L | { property: L; value?: number; }

_conditionField?​

K

_condition?​

any

Returns​

Promise<void>

Inherited from​

AbstractRepository.incrementAttribute


incrementAttributes()​

incrementAttributes<K, L>(primaryKey, info, _conditionField?, _condition?): Promise<void | Record<string, number>>

Defined in: packages/models/lib/repositories/event.d.ts:29

Increment numeric attributes with event emission

Type Parameters​

K​

K extends string

L​

L extends string

Parameters​

primaryKey​

PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>

info​

(L | { property: L; value?: number; })[] | Record<L, number>

_conditionField?​

K

_condition?​

any

Returns​

Promise<void | Record<string, number>>

Overrides​

AbstractRepository.incrementAttributes


iterate()​

iterate(query, params?): AsyncGenerator<InstanceType<T>, any, any>

Defined in: packages/models/lib/repositories/event.d.ts:52

Iterate through all objects

Parameters​

query​

string

the query filter

params?​

QueryParameters

values for the ? or :name placeholders, bound before reaching the underlying repository

Returns​

AsyncGenerator<InstanceType<T>, any, any>

an async generator of objects

Overrides​

AbstractRepository.iterate


off()​

off<K>(event, listener): void

Defined in: packages/models/lib/repositories/abstract.d.ts:106

Type Parameters​

K​

K extends string | number | symbol

Parameters​

event​

K

listener​

(data) => void

Returns​

void

Inherited from​

AbstractRepository.off


on()​

on<K>(event, listener): void

Defined in: packages/models/lib/repositories/abstract.d.ts:102

Type Parameters​

K​

K extends string | number | symbol

Parameters​

event​

K

listener​

(data) => void

Returns​

void

Inherited from​

AbstractRepository.on


once()​

once<K>(event, listener): void

Defined in: packages/models/lib/repositories/abstract.d.ts:104

Type Parameters​

K​

K extends string | number | symbol

Parameters​

event​

K

listener​

(data) => void

Returns​

void

Inherited from​

AbstractRepository.once


parseLegacyUID()​

protected parseLegacyUID(uid): PrimaryKey<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:63

Parse a uid through the model's parseLegacyUID hook

Parameters​

uid​

string

the raw storage key

Returns​

PrimaryKey<InstanceType<T>>

a key whose string form is the raw uid, or undefined when the model does not recognise it

Inherited from​

AbstractRepository.parseLegacyUID


parseUID()​

parseUID(uid, forceObject?): PrimaryKeyType<InstanceType<T>> | PrimaryKey<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:57

Parse a serialized primary key

A composite key that does not split into the primary key fields is offered to the model's optional static parseLegacyUID(uid) hook (see WEBDA_LEGACY_UID): the returned key keeps the raw uid as its string form so it addresses the legacy storage entry. Without a hook, or when the hook declines, the uid is rejected.

Parameters​

uid​

string

forceObject?​

boolean

Returns​

PrimaryKeyType<InstanceType<T>> | PrimaryKey<InstanceType<T>>

Inherited from​

AbstractRepository.parseUID


patch()​

patch<K>(primaryKey, data, _conditionField?, _condition?): Promise<void>

Defined in: packages/models/lib/repositories/event.d.ts:83

Patch with event emission (emits Patch before and Patched after)

Type Parameters​

K​

K extends string

Parameters​

primaryKey​

PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>

data​

Partial<InstanceType<T>>

_conditionField?​

K

_condition?​

any

Returns​

Promise<void>

Overrides​

AbstractRepository.patch


query()​

query(query, params?): Promise<{ continuationToken?: string; results: InstanceType<T>[]; }>

Defined in: packages/models/lib/repositories/event.d.ts:42

Query with event emission

Parameters are bound here, so the events carry the bound query and the underlying repository (often a store one) only ever receives a plain query.

Parameters​

query​

string

the query to execute

params?​

QueryParameters

values for the ? or :name placeholders

Returns​

Promise<{ continuationToken?: string; results: InstanceType<T>[]; }>

the query results with optional continuation token

Overrides​

AbstractRepository.query


ref()​

ref(key): ModelRefWithCreate<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:77

Parameters​

key​

PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>

Returns​

ModelRefWithCreate<InstanceType<T>>

Inherited from​

AbstractRepository.ref


removeAttribute()​

removeAttribute<L, K>(uuid, attribute, conditionField?, condition?): Promise<void>

Defined in: packages/models/lib/repositories/event.d.ts:71

Remove attribute with event emission

Type Parameters​

L​

L extends string

K​

K extends string

Parameters​

uuid​

PrimaryKeyType<InstanceType<T>>

attribute​

K

conditionField?​

L

condition?​

PropertyPathType<InstanceType<T>, L> | JSONed<PropertyPathType<InstanceType<T>, L>>

Returns​

Promise<void>

Overrides​

AbstractRepository.removeAttribute


removeListener()​

removeListener<K>(event, listener): void

Defined in: packages/models/lib/repositories/abstract.d.ts:119

EventEmitter-compatibility alias for off. Consumers that treat a repository as a Node EventEmitter (e.g. @webda/runtime EventIterator) call removeListener.

Type Parameters​

K​

K extends string | number | symbol

Parameters​

event​

K

the event name

listener​

(data) => void

the listener to remove

Returns​

void

Inherited from​

AbstractRepository.removeListener


setAttribute()​

setAttribute<K, L>(primaryKey, attribute, value, conditionField?, condition?): Promise<void>

Defined in: packages/models/lib/repositories/abstract.d.ts:75

Type Parameters​

K​

K extends string

L​

L extends string

Parameters​

primaryKey​

string | PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>

attribute​

K

value​

_PropertyPathType<InstanceType<T>, K>

conditionField?​

L

condition?​

_PropertyPathType<InstanceType<T>, L> | JSONed<_PropertyPathType<InstanceType<T>, L>>

Returns​

Promise<void>

Inherited from​

AbstractRepository.setAttribute


setMaxListeners()​

setMaxListeners(n): this

Defined in: packages/models/lib/repositories/abstract.d.ts:130

EventEmitter-compatibility shim. Records the max-listeners hint (no enforcement).

Parameters​

n​

number

the new hint value

Returns​

this

this for chaining

Inherited from​

AbstractRepository.setMaxListeners


update()​

update<K>(data, conditionField?, condition?): Promise<void>

Defined in: packages/models/lib/repositories/event.d.ts:88

Update with event emission (emits Update before and Updated after)

Type Parameters​

K​

K extends string

Parameters​

data​

Helpers<InstanceType<T>>

conditionField?​

K

condition?​

PropertyPathType<InstanceType<T>, K>

Returns​

Promise<void>

Overrides​

AbstractRepository.update


upsert()​

upsert(data): Promise<InstanceType<T>>

Defined in: packages/models/lib/repositories/abstract.d.ts:73

Parameters​

data​

Helpers<InstanceType<T>>

Returns​

Promise<InstanceType<T>>

Inherited from​

AbstractRepository.upsert


upsertItemToCollection()​

upsertItemToCollection<K, L>(uuid, collection, item, index?, itemWriteConditionField?, itemWriteCondition?): Promise<void>

Defined in: packages/models/lib/repositories/event.d.ts:66

Upsert item to collection with event emission

Type Parameters​

K​

K extends string

L​

L extends string | number | symbol

Parameters​

uuid​

PrimaryKeyType<InstanceType<T>>

collection​

K

item​

ArrayElement<InstanceType<T>[K]> | JSONed<ArrayElement<InstanceType<T>[K]>>

index?​

number

itemWriteConditionField?​

ArrayElement<InstanceType<T>[K]> extends object ? L : never

itemWriteCondition?​

ArrayElement<InstanceType<T>[K]> extends object ? object & ArrayElement[L] : ArrayElement<InstanceType<T>[K]>

Returns​

Promise<void>

Overrides​

AbstractRepository.upsertItemToCollection