31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
export class MikroOrmEntitiesStorage {
|
|
static storage = new Map();
|
|
static shouldClear = false;
|
|
static addEntity(entity, contextName = 'default') {
|
|
if (this.shouldClear) {
|
|
this.clear(contextName);
|
|
this.shouldClear = false;
|
|
}
|
|
let set = this.storage.get(contextName);
|
|
if (!set) {
|
|
set = new Set();
|
|
this.storage.set(contextName, set);
|
|
}
|
|
set.add(entity);
|
|
}
|
|
static getEntities(contextName = 'default') {
|
|
return this.storage.get(contextName)?.values() || [];
|
|
}
|
|
static clear(contextName = 'default') {
|
|
this.storage.get(contextName)?.clear();
|
|
}
|
|
/**
|
|
* When the `addEntity` is called next, the storage will be cleared automatically before it.
|
|
* We want to keep the cache, as it's populated on require time, but sometimes (tests) the contexts could be cleared.
|
|
* This resolves both cases by deferring the `clear` call to the first `addEntity` call.
|
|
*/
|
|
static clearLater() {
|
|
this.shouldClear = true;
|
|
}
|
|
}
|