@configurator/ravendb
Version:
RavenDB client for Node.js
47 lines • 2.17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiDatabaseHiLoIdGenerator = void 0;
const MultiTypeHiLoIdGenerator_1 = require("./MultiTypeHiLoIdGenerator");
const DocumentStoreBase_1 = require("../DocumentStoreBase");
const TypeUtil_1 = require("../../Utility/TypeUtil");
class MultiDatabaseHiLoIdGenerator {
constructor(store) {
this._generators = {};
this._store = store;
}
generateDocumentId(database, entity) {
return this._getGeneratorForDatabase(DocumentStoreBase_1.DocumentStoreBase.getEffectiveDatabase(this._store, database))
.generateDocumentId(entity);
}
_getGeneratorForDatabase(database) {
if (!(database in this._generators)) {
this._generators[database] = new MultiTypeHiLoIdGenerator_1.MultiTypeHiLoIdGenerator(this._store, database);
}
return this._generators[database];
}
async returnUnusedRange() {
for (const [key, generator] of Object.entries(this._generators)) {
await generator.returnUnusedRange();
}
}
generateNextIdFor(database, target) {
if (TypeUtil_1.TypeUtil.isString(target)) {
return this._generateNextIdFor(database, target);
}
if (TypeUtil_1.TypeUtil.isObjectTypeDescriptor(target)) {
const collectionName = this._store.conventions.getCollectionNameForType(target);
return this._generateNextIdFor(database, collectionName);
}
const collectionName = this._store.conventions.getCollectionNameForEntity(target);
return this._generateNextIdFor(database, collectionName);
}
async _generateNextIdFor(database, collectionName) {
database = this._store.getEffectiveDatabase(database);
if (!(database in this._generators)) {
this._generators[database] = new MultiTypeHiLoIdGenerator_1.MultiTypeHiLoIdGenerator(this._store, database);
}
return this._generators[database].generateNextIdFor(collectionName);
}
}
exports.MultiDatabaseHiLoIdGenerator = MultiDatabaseHiLoIdGenerator;
//# sourceMappingURL=MultiDatabaseHiLoIdGenerator.js.map