@configurator/ravendb
Version:
RavenDB client for Node.js
41 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentSessionRevisionsBase = void 0;
const Exceptions_1 = require("../../Exceptions");
const TypeUtil_1 = require("../../Utility/TypeUtil");
const StringUtil_1 = require("../../Utility/StringUtil");
const AdvancedSessionExtensionBase_1 = require("./AdvancedSessionExtensionBase");
class DocumentSessionRevisionsBase extends AdvancedSessionExtensionBase_1.AdvancedSessionExtensionBase {
forceRevisionCreationFor(entityOrId, strategy = "Before") {
if (!entityOrId) {
(0, Exceptions_1.throwError)("InvalidArgumentException", "Entity cannot be null");
}
if (TypeUtil_1.TypeUtil.isString(entityOrId)) {
this._addIdToList(entityOrId, strategy);
}
else {
const documentInfo = this._session.documentsByEntity.get(entityOrId);
if (!documentInfo) {
(0, Exceptions_1.throwError)("InvalidOperationException", "Cannot create a revision for the requested entity because it is Not tracked by the session");
}
this._addIdToList(documentInfo.id, strategy);
}
}
_addIdToList(id, requestedStrategy) {
if (StringUtil_1.StringUtil.isNullOrEmpty(id)) {
(0, Exceptions_1.throwError)("InvalidArgumentException", "Id cannot be null or empty");
}
const existingStrategy = this._session.idsForCreatingForcedRevisions.get(id);
const idAlreadyAdded = !!existingStrategy;
if (idAlreadyAdded && existingStrategy !== requestedStrategy) {
(0, Exceptions_1.throwError)("InvalidOperationException", "A request for creating a revision was already made for document "
+ id + " in the current session but with a different force strategy. New strategy requested: " + requestedStrategy
+ ". Previous strategy: " + existingStrategy + ".");
}
if (!idAlreadyAdded) {
this._session.idsForCreatingForcedRevisions.set(id, requestedStrategy);
}
}
}
exports.DocumentSessionRevisionsBase = DocumentSessionRevisionsBase;
//# sourceMappingURL=DocumentSessionRevisionsBase.js.map