ddb-table
Version:
Strongly typed library for querying and modeling DynamoDB documents.
17 lines (16 loc) • 1.04 kB
TypeScript
import { Item } from './DocumentClient';
import { GetQuery, PutQuery, UpdateQuery } from './queries';
import DeleteQuery from './queries/DeleteQuery';
import TableIndex, { TableIndexOptions, TableKey, TableKeyArgs } from './TableIndex';
export type TableOptions<H, S> = Omit<TableIndexOptions<H, S>, 'indexName'>;
export default class Table<T extends Item, H extends keyof T, S extends keyof T = never> extends TableIndex<T, H, S> {
constructor(opts: TableOptions<H, S> & ([S] extends [never] ? {} : {
sortKey: S;
}));
index<P extends Partial<T>, H extends keyof P>(name: string, primaryKey: H): TableIndex<P, H, never>;
index<P extends Partial<T>, H extends keyof P, S extends keyof P>(name: string, primaryKey: H, sortKey: S): TableIndex<P, H, S>;
put(item: T): PutQuery<T>;
get(...args: TableKeyArgs<T, H, S>): GetQuery<T, TableKey<T, H, S>>;
update(...args: TableKeyArgs<T, H, S>): UpdateQuery<T, TableKey<T, H, S>>;
delete(...args: TableKeyArgs<T, H, S>): DeleteQuery<T, TableKey<T, H, S>>;
}