@typeheim/orm-on-fire
Version:
Firestore ORM
71 lines • 2.41 kB
JavaScript
"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