Skip to main content

AtomicOperations

@webda/models


Interface: AtomicOperations<T>

Defined in: packages/models/src/repositories/repository.ts:202

Atomic operations for NoSQL databases

Only implement this for storage backends that support atomic updates (DynamoDB, MongoDB, Redis, etc.)

SQL databases should NOT implement this - use transactions instead

Extended by​

Type Parameters​

T​

T extends ModelClass = ModelClass

Methods​

incrementAttribute()​

incrementAttribute<K, L>(primaryKeyOrUid, info, conditionField?, condition?): Promise<void>

Defined in: packages/models/src/repositories/repository.ts:224

Atomically increment a single numeric field

Type Parameters​

K​

K extends string

L​

L extends string

Parameters​

primaryKeyOrUid​

string | PrimaryKeyType<InstanceType<T>>

Primary key of object to update

info​

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

Field to increment with optional value (default: 1)

conditionField?​

K | null

Field to check for condition

condition?​

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

Expected value for condition field

Returns​

Promise<void>


incrementAttributes()​

incrementAttributes<K, L>(primaryKeyOrUid, info, conditionField?, condition?): Promise<void | Record<string, number>>

Defined in: packages/models/src/repositories/repository.ts:210

Atomically increment numeric field(s)

Type Parameters​

K​

K extends string

L​

L extends string

Parameters​

primaryKeyOrUid​

string | PrimaryKeyType<InstanceType<T>>

Primary key of object to update

info​

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

Fields to increment with optional values (default: 1)

conditionField?​

K | null

Field to check for condition

condition?​

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

Expected value for condition field

Returns​

Promise<void | Record<string, number>>


removeAttribute()​

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

Defined in: packages/models/src/repositories/repository.ts:254

Atomically remove an attribute

Type Parameters​

L​

L extends string

K​

K extends string

Parameters​

primaryKeyOrUid​

string | PrimaryKeyType<InstanceType<T>>

Primary key of object to update

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>


setAttribute()​

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

Defined in: packages/models/src/repositories/repository.ts:239

Atomically set a single attribute value

Type Parameters​

K​

K extends string

L​

L extends string

Parameters​

primaryKeyOrUid​

string | PrimaryKeyType<InstanceType<T>>

Primary key of object to update

attribute​

K

Attribute name to set

value​

PropertyPathType<InstanceType<T>, K>

New value for attribute

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>