UNPKG

ddb-table

Version:

Strongly typed library for querying and modeling DynamoDB documents.

31 lines (30 loc) 1.2 kB
import DynamoDBDocument, { Item } from './DocumentClient'; import ScanQuery from './queries/ScanQuery'; import QueryQuery from './queries/QueryQuery'; export interface TableIndexOptions<H, S> { tableName: string; indexName?: string; primaryKey: H; sortKey?: S; documentClient: DynamoDBDocument; } export type TableIndexOptionsArg<H, S> = TableIndexOptions<H, S> & ([S] extends [never] ? {} : { sortKey: S; }); export type TableKeyArgs<T, H extends keyof T, S extends keyof T = never> = [ S ] extends [never] ? [T[H], undefined?] : [T[H], T[S]]; export type TableKey<T, H extends keyof T, S extends keyof T = never> = { [K in keyof T & (H | S)]: [K] extends [H | S] ? T[K] : never; }; export default class TableIndex<T extends Item, H extends keyof T, S extends keyof T = never> { readonly name: string; readonly indexName?: string; readonly primaryKey: H; readonly sortKey?: S; protected readonly client: DynamoDBDocument; constructor(opts: TableIndexOptionsArg<H, S>); key(...[primaryKey, sortKey]: TableKeyArgs<T, H, S>): TableKey<T, H, S>; scan(): ScanQuery<T, TableKey<T, H, S>>; query(): QueryQuery<T, TableKey<T, H, S>>; }