ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
47 lines (46 loc) • 7.89 kB
TypeScript
import DynamoDBDocument, { Item, UpdateCommandInput, UpdateCommandOutput } from '../DocumentClient';
import Query from './Query';
import { SetValue, AddValue, DeleteValue } from '../expressions/UpdateExpression';
import { ConditionGenerator } from '../expressions/ConditionExpression';
type QueryInput<K> = Omit<UpdateCommandInput, 'Key'> & {
Key: K;
};
type QueryOutput<T> = Omit<UpdateCommandOutput, 'Attributes'> & {
Attributes?: T;
};
export default class UpdateQuery<T extends K, K extends Item> extends Query<T, QueryInput<K>, QueryOutput<T>> {
private values;
private conditions;
private update;
constructor(client: DynamoDBDocument, params: QueryInput<K>);
protected handleInputUpdated(): void;
protected syncInput(): void;
condition(fn: ConditionGenerator<T>): this;
set<K1 extends keyof T>(path: K1 | [K1], value: SetValue<T, T[K1]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>>(path: [K1, K2], value: SetValue<T, NonNullable<T[K1]>[K2]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<NonNullable<T[K1]>[K2]>>(path: [K1, K2, K3], value: SetValue<T, NonNullable<NonNullable<T[K1]>[K2]>[K3]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<NonNullable<T[K1]>[K2]>, K4 extends keyof NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>>(path: [K1, K2, K3, K4], value: SetValue<T, NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<NonNullable<T[K1]>[K2]>, K4 extends keyof NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>, K5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>>(path: [K1, K2, K3, K4, K5], value: SetValue<T, NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<NonNullable<T[K1]>[K2]>, K4 extends keyof NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>, K5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>, K6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>>(path: [K1, K2, K3, K4, K5, K6], value: SetValue<T, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<NonNullable<T[K1]>[K2]>, K4 extends keyof NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>, K5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>, K6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>, K7 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>>(path: [K1, K2, K3, K4, K5, K6, K7], value: SetValue<T, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7]>): this;
set<K1 extends keyof T, K2 extends keyof NonNullable<T[K1]>, K3 extends keyof NonNullable<NonNullable<T[K1]>[K2]>, K4 extends keyof NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>, K5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>, K6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>, K7 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>, K8 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7]>>(path: [K1, K2, K3, K4, K5, K6, K7, K8], value: SetValue<T, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7]>[K8]>): this;
remove<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)[]]): this;
add<K1 extends keyof T>(path: K1 | [K1], value: AddValue<T[K1]>): this;
add<K1 extends keyof T, K2 extends keyof T[K1]>(path: [K1, K2], value: AddValue<T[K1][K2]>): this;
add<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(path: [K1, K2, K3], value: AddValue<T[K1][K2][K3]>): this;
add<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(path: [K1, K2, K3, K4], value: AddValue<T[K1][K2][K3][K4]>): this;
add<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]>(path: [K1, K2, K3, K4, K5], value: AddValue<T[K1][K2][K3][K4][K5]>): this;
add<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]>(path: [K1, K2, K3, K4, K5, K6], value: AddValue<T[K1][K2][K3][K4][K5][K6]>): this;
add<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]>(path: [K1, K2, K3, K4, K5, K6, K7], value: AddValue<T[K1][K2][K3][K4][K5][K6][K7]>): this;
add<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], value: AddValue<T[K1][K2][K3][K4][K5][K6][K7][K8]>): this;
delete<K1 extends keyof T>(path: K1 | [K1], value: DeleteValue<T[K1]>): this;
delete<K1 extends keyof T, K2 extends keyof T[K1]>(path: [K1, K2], value: DeleteValue<T[K1][K2]>): this;
delete<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(path: [K1, K2, K3], value: DeleteValue<T[K1][K2][K3]>): this;
delete<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(path: [K1, K2, K3, K4], value: DeleteValue<T[K1][K2][K3][K4]>): this;
delete<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]>(path: [K1, K2, K3, K4, K5], value: DeleteValue<T[K1][K2][K3][K4][K5]>): this;
delete<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]>(path: [K1, K2, K3, K4, K5, K6], value: DeleteValue<T[K1][K2][K3][K4][K5][K6]>): this;
delete<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]>(path: [K1, K2, K3, K4, K5, K6, K7], value: DeleteValue<T[K1][K2][K3][K4][K5][K6][K7]>): this;
delete<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], value: DeleteValue<T[K1][K2][K3][K4][K5][K6][K7][K8]>): this;
return(values: 'ALL_OLD' | 'ALL_NEW' | 'UPDATED_OLD' | 'UPDATED_NEW' | 'NONE'): this;
}
export {};