UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

22 lines (21 loc) 1.2 kB
import { TableAction } from '../../../table/index.js'; import type { Table } from '../../../table/index.js'; import type { IndexableKeyType, Key, ResolveIndexableKeyType } from '../../../table/types/index.js'; /** * Returns the TS type of a Table Primary Key * * @param TABLE Table * @return Object */ export type PrimaryKey<TABLE extends Table = Table> = Table extends TABLE ? Record<string, ResolveIndexableKeyType<IndexableKeyType>> : Key extends TABLE['sortKey'] ? { [KEY in TABLE['partitionKey']['name']]: ResolveIndexableKeyType<TABLE['partitionKey']['type']>; } : NonNullable<TABLE['sortKey']> extends Key ? { [KEY in TABLE['partitionKey']['name'] | NonNullable<TABLE['sortKey']>['name']]: KEY extends TABLE['partitionKey']['name'] ? ResolveIndexableKeyType<TABLE['partitionKey']['type']> : KEY extends NonNullable<TABLE['sortKey']>['name'] ? ResolveIndexableKeyType<NonNullable<TABLE['sortKey']>['type']> : never; } : never; export declare class PrimaryKeyParser<TABLE extends Table = Table> extends TableAction<TABLE> { static actionName: "parsePrimaryKey"; constructor(table: TABLE); parse(keyInput: { [KEY: string]: unknown; }): PrimaryKey<TABLE>; }