AbstractRepository
Abstract Class: AbstractRepository<T>
Defined in: packages/models/src/repositories/abstract.ts:18
Base repository implementation providing shared logic for key management, event handling, and default method implementations.
Concrete repositories (MemoryRepository, etc.) extend this class and implement the abstract storage methods.
Extended by
Type Parameters
T
T extends ModelClass
The ModelClass this repository manages
Implements
Repository<T>
Constructors
Constructor
new AbstractRepository<
T>(model,pks,separator?):AbstractRepository<T>
Defined in: packages/models/src/repositories/abstract.ts:27
Parameters
model
T
The model class constructor
pks
string[]
Array of primary key field names
separator?
string = "_"
Separator used when joining composite key fields into a string (default: "_")
Returns
AbstractRepository<T>
Properties
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
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.
model
protectedmodel:T
Defined in: packages/models/src/repositories/abstract.ts:28
The model class constructor
pks
protectedpks:string[]
Defined in: packages/models/src/repositories/abstract.ts:29
Array of primary key field names
separator
protectedseparator:string="_"
Defined in: packages/models/src/repositories/abstract.ts:30
Separator used when joining composite key fields into a string (default: "_")
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
create()
abstractcreate(data,save?):Promise<InstanceType<T>>
Defined in: packages/models/src/repositories/abstract.ts:303
Create data in the store
Parameters
data
Helpers<InstanceType<T>>
save?
boolean
if false, create in-memory object without saving
Returns
Promise<InstanceType<T>>
Implementation of
delete()
abstractdelete<K>(uuid,conditionField?,condition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:315
Delete data from the store
Type Parameters
K
K extends string
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
conditionField?
K | null
Field to check for condition (optional)
condition?
PropertyPathType<InstanceType<T>, K> | JSONed<PropertyPathType<InstanceType<T>, K>>
Value to check for condition (optional)
Returns
Promise<void>
Implementation of
deleteItemFromCollection()
abstractdeleteItemFromCollection<K,L>(uuid,collection,index,itemWriteConditionField?,itemWriteCondition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:273
Remove item from a collection by index
Type Parameters
K
K extends string
L
L extends string | number | symbol
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
collection
K
Name of the array field
index
number
Position of item to remove
itemWriteConditionField?
L
Field to check for condition on item
itemWriteCondition?
ArrayElement<InstanceType<T>[K]>[L]
Expected value for condition field on item
Returns
Promise<void>
Implementation of
Repository.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>
Implementation of
excludePrimaryKey()
excludePrimaryKey(
object):any
Defined in: packages/models/src/repositories/abstract.ts:131
Parameters
object
any
Returns
any
Implementation of
exists()
abstractexists(uuid):Promise<boolean>
Defined in: packages/models/src/repositories/abstract.ts:320
Verify if the object exists
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
Returns
Promise<boolean>
Implementation of
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
Implementation of
get()
abstractget(primaryKey):Promise<HelperProperties<InstanceType<T>>>
Defined in: packages/models/src/repositories/abstract.ts:302
Get data from the store
Parameters
primaryKey
PrimaryKeyType<InstanceType<T>>
Returns
Promise<HelperProperties<InstanceType<T>>>
Implementation of
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
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>>
Implementation of
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>>
Implementation of
Repository.getPrimaryKey
getRootModel()
getRootModel():
T
Defined in: packages/models/src/repositories/abstract.ts:33
Returns
T
Implementation of
getUID()
getUID(
object):string
Defined in: packages/models/src/repositories/abstract.ts:216
Parameters
object
any
Returns
string
Implementation of
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>
Implementation of
incrementAttributes()
abstractincrementAttributes<K,L>(primaryKey,info,_conditionField?,_condition?):Promise<void|Record<string,number>>
Defined in: packages/models/src/repositories/abstract.ts:258
Atomically increment numeric field(s)
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>
Fields to increment with optional values (default: 1)
_conditionField?
K | null
_condition?
any
Returns
Promise<void | Record<string, number>>
Implementation of
Repository.incrementAttributes
iterate()
abstractiterate(query,params?):AsyncGenerator<InstanceType<T>,any,any>
Defined in: packages/models/src/repositories/abstract.ts:272
Iterate over the store
Parameters
query
string
the WebdaQL query, optionally with ? or :name placeholders
params?
QueryParameters
values for the placeholders: an array for ?, an object for :name
Returns
AsyncGenerator<InstanceType<T>, any, any>
Implementation of
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
Implementation of
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
Implementation of
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
Implementation of
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
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>>
Implementation of
patch()
abstractpatch<K>(primaryKey,data,_conditionField?,_condition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:304
Partially update object (only specified fields)
Type Parameters
K
K extends string
Parameters
primaryKey
PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>
data
Partial<InstanceType<T>>
Partial object data (only fields to update)
_conditionField?
K | null
_condition?
any
Returns
Promise<void>
Implementation of
query()
abstractquery(query,params?):Promise<{continuationToken?:string;results:InstanceType<T>[]; }>
Defined in: packages/models/src/repositories/abstract.ts:268
Query the store
Parameters
query
string
the WebdaQL query, optionally with ? or :name placeholders
params?
QueryParameters
values for the placeholders: an array for ?, an object for :name
Returns
Promise<{ continuationToken?: string; results: InstanceType<T>[]; }>
Implementation of
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>>
Implementation of
removeAttribute()
abstractremoveAttribute<L,K>(uuid,attribute,conditionField?,condition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:296
Atomically remove an attribute
Type Parameters
L
L extends string
K
K extends string
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
attribute
K
Attribute name to remove
conditionField?
L | null
Field to check for condition
condition?
PropertyPathType<InstanceType<T>, L> | JSONed<PropertyPathType<InstanceType<T>, L>>
Expected value for condition field
Returns
Promise<void>
Implementation of
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
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>
Implementation of
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
update()
abstractupdate<K>(data,conditionField?,condition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:310
Replace entire object (full update)
Type Parameters
K
K extends string
Parameters
data
Helpers<InstanceType<T>>
Complete object data including primary key
conditionField?
K | null
Field to check for optimistic locking (null = no check)
condition?
PropertyPathType<InstanceType<T>, K>
Expected value for condition field
Returns
Promise<void>
Implementation of
upsert()
upsert(
data):Promise<InstanceType<T>>
Defined in: packages/models/src/repositories/abstract.ts:221
Parameters
data
Helpers<InstanceType<T>>
Returns
Promise<InstanceType<T>>
Implementation of
upsertItemToCollection()
abstractupsertItemToCollection<K,L>(uuid,collection,item,index?,itemWriteConditionField?,itemWriteCondition?):Promise<void>
Defined in: packages/models/src/repositories/abstract.ts:283
Add or update item in a collection (array field)
Type Parameters
K
K extends string
L
L extends string | number | symbol
Parameters
uuid
PrimaryKeyType<InstanceType<T>>
collection
K
Name of the array field
item
ArrayElement<InstanceType<T>[K]> | JSONed<ArrayElement<InstanceType<T>[K]>>
Item to add/update
index?
number
Position to insert (undefined = append to end)
itemWriteConditionField?
ArrayElement<InstanceType<T>[K]> extends object ? L : never
Field to check for condition on item
itemWriteCondition?
ArrayElement<InstanceType<T>[K]> extends object ? object & ArrayElement[L] : ArrayElement<InstanceType<T>[K]>
Expected value for condition field on item
Returns
Promise<void>