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