dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
48 lines (47 loc) • 3.77 kB
TypeScript
import type { Entity } from '../../../entity/index.js';
import { EntityAction } from '../../../entity/index.js';
import type { InputValue, Schema, TransformedValue } from '../../../schema/index.js';
import type { IQueryCommand, Query, QueryOptions } from '../../../table/actions/query/index.js';
import { QueryCommand } from '../../../table/actions/query/queryCommand.js';
import type { Cast, _Omit } from '../../../types/index.js';
import { $meta, $options, $pattern, $schema } from './constants.js';
interface AccessPatternMetadata {
title?: string;
description?: string;
}
type MergeOptions<ENTITY extends Entity, QUERY extends Query<ENTITY['table']>, DEFAULT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY>, CONTEXT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY>> = QueryOptions<ENTITY['table'], [ENTITY], QUERY> extends DEFAULT_OPTIONS ? CONTEXT_OPTIONS : QueryOptions<ENTITY['table'], [ENTITY], QUERY> extends CONTEXT_OPTIONS ? DEFAULT_OPTIONS : DEFAULT_OPTIONS & CONTEXT_OPTIONS;
export declare class IAccessPattern<ENTITY extends Entity = Entity, SCHEMA extends Schema = Schema, QUERY extends Query<ENTITY['table']> = Query<ENTITY['table']>, DEFAULT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY> = QueryOptions<ENTITY['table'], [
ENTITY
], QUERY>, CONTEXT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY> = QueryOptions<ENTITY['table'], [
ENTITY
], QUERY>> extends EntityAction<ENTITY> {
static actionName: "access-pattern";
[$schema]?: SCHEMA;
[$pattern]?: (input: Schema extends SCHEMA ? any : TransformedValue<SCHEMA>) => QUERY & {
options?: CONTEXT_OPTIONS;
};
[$options]: DEFAULT_OPTIONS;
[$meta]: AccessPatternMetadata;
constructor(entity: ENTITY, schema?: SCHEMA, pattern?: (input: TransformedValue<SCHEMA>) => QUERY & {
options?: CONTEXT_OPTIONS;
}, options?: DEFAULT_OPTIONS, meta?: AccessPatternMetadata);
query(input: InputValue<SCHEMA>): Entity extends ENTITY ? IQueryCommand : QueryCommand<ENTITY['table'], [
ENTITY
], QUERY, MergeOptions<ENTITY, QUERY, DEFAULT_OPTIONS, CONTEXT_OPTIONS>>;
}
export declare class AccessPattern<ENTITY extends Entity = Entity, SCHEMA extends Schema = Schema, QUERY extends Query<ENTITY['table']> = Query<ENTITY['table']>, DEFAULT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY> = QueryOptions<ENTITY['table'], [
ENTITY
], QUERY>, CONTEXT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY> = QueryOptions<ENTITY['table'], [
ENTITY
], QUERY>> extends IAccessPattern<ENTITY, SCHEMA, QUERY, DEFAULT_OPTIONS, CONTEXT_OPTIONS> {
constructor(entity: ENTITY, schema?: SCHEMA, pattern?: (input: TransformedValue<SCHEMA>) => QUERY & {
options?: CONTEXT_OPTIONS;
}, options?: DEFAULT_OPTIONS, meta?: AccessPatternMetadata);
schema<NEXT_SCHEMA extends Schema>(nextSchema: NEXT_SCHEMA): AccessPattern<ENTITY, NEXT_SCHEMA, QUERY, DEFAULT_OPTIONS, CONTEXT_OPTIONS>;
pattern<NEXT_QUERY extends Query<ENTITY['table']>, NEXT_CONTEXT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], NEXT_QUERY>>(nextPattern: (input: TransformedValue<SCHEMA>) => NEXT_QUERY & {
options?: NEXT_CONTEXT_OPTIONS;
}): AccessPattern<ENTITY, SCHEMA, Cast<_Omit<NEXT_QUERY, 'options'>, Query<ENTITY['table']>>, DEFAULT_OPTIONS, NEXT_CONTEXT_OPTIONS>;
options<NEXT_DEFAULT_OPTIONS extends QueryOptions<ENTITY['table'], [ENTITY], QUERY>>(nextOptions: NEXT_DEFAULT_OPTIONS | ((prevOptions: DEFAULT_OPTIONS) => NEXT_DEFAULT_OPTIONS)): AccessPattern<ENTITY, SCHEMA, QUERY, NEXT_DEFAULT_OPTIONS, CONTEXT_OPTIONS>;
meta(nextMeta: AccessPatternMetadata): AccessPattern<ENTITY, SCHEMA, QUERY, DEFAULT_OPTIONS, CONTEXT_OPTIONS>;
}
export {};