ravendb
Version:
RavenDB client for Node.js
48 lines • 2.21 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultiDatabaseHiLoIdGenerator = void 0;
const MultiTypeHiLoIdGenerator_js_1 = require("./MultiTypeHiLoIdGenerator.js");
const DocumentStoreBase_js_1 = require("../DocumentStoreBase.js");
const TypeUtil_js_1 = require("../../Utility/TypeUtil.js");
class MultiDatabaseHiLoIdGenerator {
_store;
_generators = {};
constructor(store) {
this._store = store;
}
generateDocumentId(database, entity) {
return this._getGeneratorForDatabase(DocumentStoreBase_js_1.DocumentStoreBase.getEffectiveDatabase(this._store, database))
.generateDocumentId(entity);
}
_getGeneratorForDatabase(database) {
if (!(database in this._generators)) {
this._generators[database] = new MultiTypeHiLoIdGenerator_js_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_js_1.TypeUtil.isString(target)) {
return this._generateNextIdFor(database, target);
}
if (TypeUtil_js_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_js_1.MultiTypeHiLoIdGenerator(this._store, database);
}
return this._generators[database].generateNextIdFor(collectionName);
}
}
exports.MultiDatabaseHiLoIdGenerator = MultiDatabaseHiLoIdGenerator;
//# sourceMappingURL=MultiDatabaseHiLoIdGenerator.js.map