dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
22 lines (21 loc) • 1.2 kB
TypeScript
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>;
}