EventRepository
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
protectedevents:Map<keyofInstanceType<T>[typeofWEBDA_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
protectedmaxListeners: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
protectedmodel:T
Defined in: packages/models/lib/repositories/abstract.d.ts:18
Inherited from
AbstractRepository.model
pks
protectedpks:string[]
Defined in: packages/models/lib/repositories/abstract.d.ts:19
Inherited from
AbstractRepository.pks
repository
protectedrepository:AbstractRepository<T>
Defined in: packages/models/lib/repositories/event.d.ts:17
separator
protectedseparator:string
Defined in: packages/models/lib/repositories/abstract.d.ts:20
Inherited from
AbstractRepository.separator
Methods
buildItem()
protectedbuildItem(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()
protectedparseLegacyUID(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