EventRepository
Class: EventRepository<T>
Defined in: packages/models/src/repositories/event.ts:17
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
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/src/repositories/event.ts:24
Parameters
model
T
The model class constructor
pks
string[]
Array of primary key field names
repository
The underlying repository to delegate storage operations to
separator?
string
Separator used when joining composite key fields (default: "_")
Returns
EventRepository<T>
Overrides
AbstractRepository.constructor
Properties
[WEBDA_TEST]
[WEBDA_TEST]:
object
Defined in: packages/models/src/repositories/event.ts:291
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/src/repositories/abstract.ts:20
Registered event listeners keyed by event name
Inherited from
maxListeners
protectedmaxListeners:number=100
Defined in: packages/models/src/repositories/abstract.ts:357
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/src/repositories/abstract.ts:28
The model class constructor
Inherited from
pks
protectedpks:string[]
Defined in: packages/models/src/repositories/abstract.ts:29
Array of primary key field names
Inherited from
repository
protectedrepository:AbstractRepository<T>
Defined in: packages/models/src/repositories/event.ts:27
The underlying repository to delegate storage operations to
separator
protectedseparator:string="_"
Defined in: packages/models/src/repositories/abstract.ts:30
Separator used when joining composite key fields into a string (default: "_")
Inherited from
Methods
buildItem()
protectedbuildItem(data):InstanceType<T>
Defined in: packages/models/src/repositories/abstract.ts:47
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
create()
create(
data,save?):Promise<InstanceType<T>>
Defined in: packages/models/src/repositories/event.ts:234
Create with event emission (emits Create before and Created after)
Parameters
data
Helpers<InstanceType<T>>
save?
boolean
Returns
Promise<InstanceType<T>>
Overrides
delete()
delete<
K>(uuid,conditionField?,condition?):Promise<void>
Defined in: packages/models/src/repositories/event.ts:275
Delete with event emission (emits Delete before and Deleted after)
Type Parameters
K
K extends string
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
conditionField?
K | null
condition?
PropertyPathType<InstanceType<T>, K> | JSONed<PropertyPathType<InstanceType<T>, K>>
Returns
Promise<void>
Overrides
deleteItemFromCollection()
deleteItemFromCollection<
K,L>(uuid,collection,index,itemWriteConditionField?,itemWriteCondition?):Promise<void>
Defined in: packages/models/src/repositories/event.ts:102
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/src/repositories/abstract.ts:396
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
excludePrimaryKey()
excludePrimaryKey(
object):any
Defined in: packages/models/src/repositories/abstract.ts:131
Parameters
object
any
Returns
any
Inherited from
AbstractRepository.excludePrimaryKey
exists()
exists(
uuid):Promise<boolean>
Defined in: packages/models/src/repositories/event.ts:285
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
Returns
Promise<boolean>
Overrides
fromUID()
fromUID(
uid):ModelRefWithCreate<InstanceType<T>>
Defined in: packages/models/src/repositories/abstract.ts:80
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
get()
get(
primaryKey):Promise<HelperProperties<InstanceType<T>>>
Defined in: packages/models/src/repositories/event.ts:226
Parameters
primaryKey
PrimaryKeyType<InstanceType<T>>
Returns
Promise<HelperProperties<InstanceType<T>>>
Overrides
getMaxListeners()
getMaxListeners():
number
Defined in: packages/models/src/repositories/abstract.ts:377
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/src/repositories/abstract.ts:141
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/src/repositories/abstract.ts:143
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/src/repositories/abstract.ts:33
Returns
T
Inherited from
AbstractRepository.getRootModel
getUID()
getUID(
object):string
Defined in: packages/models/src/repositories/abstract.ts:216
Parameters
object
any
Returns
string
Inherited from
incrementAttribute()
incrementAttribute<
K,L>(primaryKey,info,_conditionField?,_condition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:249
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 | null
_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/src/repositories/event.ts:37
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 | null
_condition?
any
Returns
Promise<void | Record<string, number>>
Overrides
AbstractRepository.incrementAttributes
iterate()
iterate(
query,params?):AsyncGenerator<InstanceType<T>,any,any>
Defined in: packages/models/src/repositories/event.ts:87
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
off()
off<
K>(event,listener):void
Defined in: packages/models/src/repositories/abstract.ts:346
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
listener
(data) => void
Returns
void
Inherited from
on()
on<
K>(event,listener):void
Defined in: packages/models/src/repositories/abstract.ts:323
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
listener
(data) => void
Returns
void
Inherited from
once()
once<
K>(event,listener):void
Defined in: packages/models/src/repositories/abstract.ts:334
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
listener
(data) => void
Returns
void
Inherited from
parseLegacyUID()
protectedparseLegacyUID(uid):PrimaryKey<InstanceType<T>> |undefined
Defined in: packages/models/src/repositories/abstract.ts:119
Parse a uid through the model's parseLegacyUID hook
Parameters
uid
string
the raw storage key
Returns
PrimaryKey<InstanceType<T>> | undefined
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/src/repositories/abstract.ts:93
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
patch()
patch<
K>(primaryKey,data,_conditionField?,_condition?):Promise<void>
Defined in: packages/models/src/repositories/event.ts:248
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 | null
_condition?
any
Returns
Promise<void>
Overrides
query()
query(
query,params?):Promise<{continuationToken?:string;results:InstanceType<T>[]; }>
Defined in: packages/models/src/repositories/event.ts:68
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
ref()
ref(
key):ModelRefWithCreate<InstanceType<T>>
Defined in: packages/models/src/repositories/abstract.ts:242
Parameters
key
PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>
Returns
ModelRefWithCreate<InstanceType<T>>
Inherited from
removeAttribute()
removeAttribute<
L,K>(uuid,attribute,conditionField?,condition?):Promise<void>
Defined in: packages/models/src/repositories/event.ts:197
Remove attribute with event emission
Type Parameters
L
L extends string
K
K extends string
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
attribute
K
conditionField?
L | null
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/src/repositories/abstract.ts:366
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/src/repositories/abstract.ts:231
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 | null
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/src/repositories/abstract.ts:386
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/src/repositories/event.ts:262
Update with event emission (emits Update before and Updated after)
Type Parameters
K
K extends string
Parameters
data
Helpers<InstanceType<T>>
conditionField?
K | null
condition?
PropertyPathType<InstanceType<T>, K>
Returns
Promise<void>
Overrides
upsert()
upsert(
data):Promise<InstanceType<T>>
Defined in: packages/models/src/repositories/abstract.ts:221
Parameters
data
Helpers<InstanceType<T>>
Returns
Promise<InstanceType<T>>
Inherited from
upsertItemToCollection()
upsertItemToCollection<
K,L>(uuid,collection,item,index?,itemWriteConditionField?,itemWriteCondition?):Promise<void>
Defined in: packages/models/src/repositories/event.ts:147
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>