UNPKG

ddb-table

Version:

Strongly typed library for querying and modeling DynamoDB documents.

47 lines (46 loc) 7.89 kB
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 {};