UNPKG

dynamodb-toolbox

Version:

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

26 lines (25 loc) 1.86 kB
import type { IAccessPattern as IEntityAccessPattern } from '../../../entity/actions/accessPattern/index.js'; import type { Entity } from '../../../entity/index.js'; import type { IAccessPattern as ITableAccessPattern } from '../../../table/actions/accessPattern/index.js'; import type { Table } from '../../../table/index.js'; import { TableAction } from '../../../table/index.js'; export declare class Registry<TABLE extends Table = Table, ENTITIES extends Entity[] = Entity[], ACCESS_PATTERNS extends Record<string, ITableAccessPattern | IEntityAccessPattern> = Record<string, ITableAccessPattern | IEntityAccessPattern>> extends TableAction<TABLE, ENTITIES> { static actionName: "registry"; readonly entities: RegistryEntities<ENTITIES>; readonly accessPatterns: ACCESS_PATTERNS; readonly query: RegistryQueries<ACCESS_PATTERNS>; constructor(table: TABLE, _entities?: ENTITIES, accessPatterns?: ACCESS_PATTERNS, { entities, query }?: { entities?: RegistryEntities<ENTITIES>; query?: RegistryQueries<ACCESS_PATTERNS>; }); registerEntities<NEXT_ENTITIES extends Entity[]>(...nextEntities: NEXT_ENTITIES): Registry<TABLE, NEXT_ENTITIES>; registerAccessPatterns<NEXT_ACCESS_PATTERNS extends Record<string, ITableAccessPattern | IEntityAccessPattern>>(nextAccessPatterns: NEXT_ACCESS_PATTERNS): Registry<TABLE, ENTITIES, NEXT_ACCESS_PATTERNS>; build<ACTION extends TableAction<TABLE, ENTITIES> = TableAction<TABLE, ENTITIES>>(Action: new (table: TABLE, entities?: ENTITIES) => ACTION): ACTION; } type RegistryQueries<ACCESS_PATTERNS extends Record<string, ITableAccessPattern | IEntityAccessPattern>> = { [KEY in keyof ACCESS_PATTERNS]: ACCESS_PATTERNS[KEY]['query']; }; type RegistryEntities<ENTITIES extends Entity[]> = { [ENTITY in ENTITIES[number] as ENTITY['entityName']]: ENTITY; }; export {};