dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
32 lines (31 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Registry = void 0;
const index_js_1 = require("../../../table/index.js");
class Registry extends index_js_1.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[index_js_1.$entities], nextAccessPatterns, { entities: this.entities, query: registryQueries(nextAccessPatterns) });
}
build(Action) {
return new Action(this.table, this[index_js_1.$entities]);
}
}
exports.Registry = Registry;
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]));