UNPKG

@forestadmin/datasource-toolkit

Version:
75 lines 6.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class CollectionDecorator { get nativeDriver() { return this.childCollection.nativeDriver; } get schema() { if (!this.lastSchema) { // If the schema is not cached (at the first call, or after a markSchemaAsDirty call), const subSchema = this.childCollection.schema; this.lastSchema = this.refineSchema(subSchema); } return this.lastSchema; } get name() { return this.childCollection.name; } constructor(childCollection, dataSource) { this.childCollection = childCollection; this.dataSource = dataSource; // When the child collection invalidates its schema, we also invalidate ours. // This is done like this, and not in the markSchemaAsDirty method, because we don't have // a reference to parent collections from children. if (childCollection instanceof CollectionDecorator) { const originalChildMarkSchemaAsDirty = childCollection.markSchemaAsDirty; childCollection.markSchemaAsDirty = () => { // Call the original method (the child) originalChildMarkSchemaAsDirty.call(childCollection); // Invalidate our schema (the parent) this.markSchemaAsDirty(); }; } } async execute(caller, name, data, filter) { const refinedFilter = await this.refineFilter(caller, filter); return this.childCollection.execute(caller, name, data, refinedFilter); } async getForm(caller, name, data, filter, metas) { const refinedFilter = await this.refineFilter(caller, filter); return this.childCollection.getForm(caller, name, data, refinedFilter, metas); } async create(caller, data) { return this.childCollection.create(caller, data); } async list(caller, filter, projection) { const refinedFilter = await this.refineFilter(caller, filter); return this.childCollection.list(caller, refinedFilter, projection); } async update(caller, filter, patch) { const refinedFilter = await this.refineFilter(caller, filter); return this.childCollection.update(caller, refinedFilter, patch); } async delete(caller, filter) { const refinedFilter = await this.refineFilter(caller, filter); return this.childCollection.delete(caller, refinedFilter); } async aggregate(caller, filter, aggregation, limit) { const refinedFilter = await this.refineFilter(caller, filter); return this.childCollection.aggregate(caller, refinedFilter, aggregation, limit); } async renderChart(caller, name, recordId) { return this.childCollection.renderChart(caller, name, recordId); } markSchemaAsDirty() { this.lastSchema = null; } async refineFilter(caller, filter) { return filter; } refineSchema(subSchema) { return subSchema; } } exports.default = CollectionDecorator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9ycy9jb2xsZWN0aW9uLWRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLE1BQXFCLG1CQUFtQjtJQU10QyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixzRkFBc0Y7WUFDdEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZLGVBQTJCLEVBQUUsVUFBc0I7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsNkVBQTZFO1FBQzdFLHlGQUF5RjtRQUN6RixtREFBbUQ7UUFDbkQsSUFBSSxlQUFlLFlBQVksbUJBQW1CLEVBQUU7WUFDbEQsTUFBTSw4QkFBOEIsR0FBRyxlQUFlLENBQUMsaUJBQWlCLENBQUM7WUFFekUsZUFBZSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtnQkFDdkMsdUNBQXVDO2dCQUN2Qyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBRXJELHFDQUFxQztnQkFDckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDO1NB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