UNPKG

@typeheim/orm-on-fire

Version:
71 lines 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MetadataStorage = void 0; class MetadataStorage { constructor() { this.metadataMap = new Map(); } entity(target) { return { add: (metadata) => { this.add(target, metadata); }, addField: (fieldMetadata) => { this.addField(target, fieldMetadata); }, addCollectionRef: (subCollectionMetadata) => { this.addCollectionRef(target, subCollectionMetadata); }, addDocRef: (refMetadata) => { this.addDocRef(target, refMetadata); }, setRepository: (repository) => { this.setRepository(target, repository); }, get: () => { return this.get(target); }, }; } get(target) { return this.metadataMap.get(target); } add(target, metadata) { this.ensureMetadataExistForTarget(target); if (metadata.collection) { this.metadataMap.get(target).collection = metadata.collection; } if (metadata.fields) { this.metadataMap.get(target).fields = metadata.fields; } } addField(target, metadata) { this.ensureMetadataExistForTarget(target); this.metadataMap.get(target).fields.push(metadata); } addCollectionRef(target, metadata) { this.ensureMetadataExistForTarget(target); this.metadataMap.get(target).collectionRefs.push(metadata); } addDocRef(target, metadata) { this.ensureMetadataExistForTarget(target); this.metadataMap.get(target).docRefs[metadata.fieldName] = metadata; } setRepository(target, repository) { this.ensureMetadataExistForTarget(target); this.metadataMap.get(target).repository = repository; } ensureMetadataExistForTarget(target) { if (!this.metadataMap.has(target)) { this.metadataMap.set(target, { collection: '', repository: null, fields: [], collectionRefs: [], docRefs: {}, }); } } } exports.MetadataStorage = MetadataStorage; //# sourceMappingURL=MetadataStorage.js.map