ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
21 lines (20 loc) • 1.34 kB
TypeScript
import ExpressionAttributeNames from './ExpressionAttributeNames';
import ExpressionAttributeValues from './ExpressionAttributeValues';
export type Operand = '+' | '-';
export type ValueFn<T, V> = V | ((exp: UpdateValueExpression<T, V>) => string);
export type ListValue<V> = [V] extends [unknown[]] ? V : never;
export default class UpdateValueExpression<T, V> {
private names;
private values;
private pathName;
private valueKey;
constructor(names: ExpressionAttributeNames<T>, values: ExpressionAttributeValues, pathName: string, valueKey: string);
name<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3], K5 extends keyof T[K1][K2][K3][K4], K6 extends keyof T[K1][K2][K3][K4][K5], K7 extends keyof T[K1][K2][K3][K4][K5][K6], K8 extends keyof T[K1][K2][K3][K4][K5][K6][K7]>(...path: [K1, K2?, K3?, K4?, K5?, K6?, K7?, K8?, ...(string | number)[]]): string;
value(value: V): string;
inc(a: ValueFn<T, V>, b?: ValueFn<T, V>): string;
dec(a: ValueFn<T, V>, b?: ValueFn<T, V>): string;
operand(operand: Operand, a: ValueFn<T, V>, b?: ValueFn<T, V>): string;
listAppend(list1: ValueFn<T, ListValue<V>>, list2?: ValueFn<T, ListValue<V>>): string;
ifNotExists(value: ValueFn<T, V>): string;
protected calcValueFn(value: ValueFn<T, V>): string;
}