mongot
Version:
MongoT is a modern ODM library for MongoDb.
74 lines • 2.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const StoreCollection = new WeakMap();
const StoreCollectionIndexes = new WeakMap();
const StoreType = new WeakMap();
const StoreHooks = new WeakMap();
const StoreVirtuals = new WeakMap();
class MetadataStore {
constructor() { }
static setCollectionMetadata(target, name, construct, options) {
StoreCollection.set(target, { name, construct, options });
}
static setCollectionIndexMetadata(target, indexOrSpec, options) {
StoreCollectionIndexes.set(target, [
...(StoreCollectionIndexes.get(target) || []),
{
indexOrSpec,
options
}
]);
}
static getCollectionIndexMetadata(target) {
return StoreCollectionIndexes.get(target);
}
static getCollectionMetadata(target) {
return StoreCollection.get(target);
}
static setSchemaPropertyMetadata(target, property, metadata) {
if (false === StoreType.has(target)) {
StoreType.set(target, new Map());
}
if (false === StoreType.get(target).has(property)) {
StoreType.get(target).set(property, {});
}
Object.assign(StoreType.get(target).get(property), metadata);
}
static getSchemaMetadata(target) {
const maps = [];
const proto = Object.getPrototypeOf(target);
if (proto && proto !== target && StoreType.has(proto)) {
maps.push(...this.getSchemaMetadata(proto));
}
if (StoreType.has(target)) {
maps.push(...StoreType.get(target));
}
return new Map(maps);
}
static getSchemaPropertyMetadata(target, property) {
return StoreType.get(target).get(property);
}
static setSchemaHookMetadata(target, hook, property) {
if (false === StoreHooks.has(target)) {
StoreHooks.set(target, new Map());
}
if (false === StoreHooks.get(target).has(hook)) {
StoreHooks.get(target).set(hook, []);
}
StoreHooks.get(target).get(hook).push(property || hook);
}
static getSchemaHookMetadata(target) {
return StoreHooks.get(target);
}
static setSchemaVirtualMetadata(target, virtual) {
if (false === StoreVirtuals.has(target)) {
StoreVirtuals.set(target, []);
}
StoreVirtuals.get(target).push(virtual);
}
static getSchemaVirtualMetadata(target) {
return StoreVirtuals.get(target) || [];
}
}
exports.MetadataStore = MetadataStore;
//# sourceMappingURL=store.js.map