dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
33 lines (32 loc) • 2.78 kB
TypeScript
import type { DynamoDBDocumentClient, TransactWriteCommandInput, TransactWriteCommandOutput } from '@aws-sdk/lib-dynamodb';
import type { CapacityOption } from '../../../options/capacity.js';
import type { ClientRequestToken } from '../../../options/clientRequestToken.js';
import type { MetricsOption } from '../../../options/metrics.js';
import type { DocumentClientOptions } from '../../../types/documentClientOptions.js';
import type { WriteTransactionImplementation } from './transaction.js';
export interface ExecuteTransactWriteOptions extends DocumentClientOptions {
documentClient?: DynamoDBDocumentClient;
capacity?: CapacityOption;
metrics?: MetricsOption;
clientRequestToken?: ClientRequestToken;
}
export type ExecuteTransactWriteInput = WriteTransactionImplementation[] | [ExecuteTransactWriteOptions, ...WriteTransactionImplementation[]];
type ExecuteTransactWrite = <TRANSACTIONS extends ExecuteTransactWriteInput>(...transactions: TRANSACTIONS) => Promise<ExecuteTransactWriteResponses<TRANSACTIONS>>;
export type ExecuteTransactWriteResponses<TRANSACTIONS extends ExecuteTransactWriteInput> = TRANSACTIONS extends WriteTransactionImplementation[] ? ExecuteTransactWriteResponse<TRANSACTIONS> : TRANSACTIONS extends [ExecuteTransactWriteOptions, ...infer TRANSACTIONS_TAIL] ? TRANSACTIONS_TAIL extends WriteTransactionImplementation[] ? ExecuteTransactWriteResponse<TRANSACTIONS_TAIL> : never : never;
type ExecuteTransactWriteResponse<TRANSACTIONS extends WriteTransactionImplementation[]> = TransactWriteCommandOutput & {
ToolboxItems: ToolboxItems<TRANSACTIONS>;
};
type ToolboxItems<TRANSACTIONS extends WriteTransactionImplementation[], TOOLBOX_ITEMS extends unknown[] = []> = TRANSACTIONS extends [infer TRANSACTIONS_HEAD, ...infer TRANSACTIONS_TAIL] ? TRANSACTIONS_HEAD extends WriteTransactionImplementation ? TRANSACTIONS_TAIL extends WriteTransactionImplementation[] ? ToolboxItems<TRANSACTIONS_TAIL, [...TOOLBOX_ITEMS, ToolboxItem<TRANSACTIONS_HEAD>]> : never : never : number extends TRANSACTIONS['length'] ? [
...TOOLBOX_ITEMS,
...(TRANSACTIONS[number] extends infer TRANSACTION ? TRANSACTION extends WriteTransactionImplementation ? ToolboxItem<TRANSACTION> : never : never)[]
] : TOOLBOX_ITEMS extends [] ? unknown[] : TOOLBOX_ITEMS;
type ToolboxItem<TRANSACTION extends WriteTransactionImplementation, PARAMS = ReturnType<TRANSACTION['params']>> = PARAMS extends {
ToolboxItem: unknown;
} ? PARAMS['ToolboxItem'] : undefined;
export declare const execute: ExecuteTransactWrite;
export declare const getCommandInput: (transactions: WriteTransactionImplementation[], options?: ExecuteTransactWriteOptions) => TransactWriteCommandInput & {
TransactItems: {
ToolboxItem?: unknown;
}[];
};
export {};