UNPKG

dynamodb-toolbox

Version:

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

28 lines (27 loc) 1.22 kB
import { $entities, TableAction } from '../../../table/index.js'; export class Registry extends TableAction { constructor(table, _entities = [], accessPatterns = {}, { entities = registryEntities(_entities), query = registryQueries(accessPatterns) } = {}) { super(table, _entities); this.entities = entities; this.accessPatterns = accessPatterns; this.query = query; } registerEntities(...nextEntities) { return new Registry(this.table, nextEntities, this.accessPatterns, { entities: registryEntities(nextEntities), query: this.query }); } registerAccessPatterns(nextAccessPatterns) { return new Registry(this.table, this[$entities], nextAccessPatterns, { entities: this.entities, query: registryQueries(nextAccessPatterns) }); } build(Action) { return new Action(this.table, this[$entities]); } } Registry.actionName = 'registry'; const registryQueries = (accessPatterns) => Object.fromEntries(Object.entries(accessPatterns).map(([key, ap]) => [ key, input => ap.query(input) ])); const registryEntities = (entities) => Object.fromEntries(entities.map((entity) => [entity.entityName, entity]));