UNPKG

ravendb

Version:
90 lines 3.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateDatabaseCommand = exports.CreateDatabaseOperation = void 0; const RavenCommand_js_1 = require("../../Http/RavenCommand.js"); const index_js_1 = require("../../Exceptions/index.js"); const HttpUtil_js_1 = require("../../Utility/HttpUtil.js"); const Constants_js_1 = require("../../Constants.js"); const RaftIdGenerator_js_1 = require("../../Utility/RaftIdGenerator.js"); const TypeUtil_js_1 = require("../../Utility/TypeUtil.js"); const DatabaseRecordBuilder_js_1 = require("./DatabaseRecordBuilder.js"); class CreateDatabaseOperation { get resultType() { return "CommandResult"; } _databaseRecord; _replicationFactor; constructor(databaseRecordOrBuilder, replicationFactor) { if (TypeUtil_js_1.TypeUtil.isFunction(databaseRecordOrBuilder)) { const instance = DatabaseRecordBuilder_js_1.DatabaseRecordBuilder.create(); databaseRecordOrBuilder(instance); this._databaseRecord = instance.toDatabaseRecord(); this._replicationFactor = (this._databaseRecord.topology && this._databaseRecord.topology.replicationFactor) ?? 1; } else { this._databaseRecord = databaseRecordOrBuilder; const topology = databaseRecordOrBuilder.topology; if (replicationFactor) { this._replicationFactor = replicationFactor; } else { if (topology) { this._replicationFactor = topology.replicationFactor > 0 ? topology.replicationFactor : 1; } else { this._replicationFactor = 1; } } } } getCommand(conventions) { return new CreateDatabaseCommand(conventions, this._databaseRecord, this._replicationFactor); } } exports.CreateDatabaseOperation = CreateDatabaseOperation; class CreateDatabaseCommand extends RavenCommand_js_1.RavenCommand { _conventions; _databaseRecord; _replicationFactor; _dbEtag; _databaseName; constructor(conventions, databaseRecord, replicationFactor, etag) { super(); this._conventions = conventions; this._databaseRecord = databaseRecord; this._replicationFactor = replicationFactor; this._dbEtag = etag; if (!databaseRecord || !databaseRecord.databaseName) { (0, index_js_1.throwError)("InvalidOperationException", "Database name is required"); } this._databaseName = databaseRecord.databaseName; } createRequest(node) { let uri = node.url + "/admin/databases?name=" + this._databaseName; uri += "&replicationFactor=" + this._replicationFactor; const databaseDocumentJson = this._serializer.serialize(this._databaseRecord); return { uri, method: "PUT", headers: HttpUtil_js_1.HeadersBuilder.create() .typeAppJson() .with(Constants_js_1.HEADERS.ETAG, `"${this._dbEtag}"`) .build(), body: databaseDocumentJson }; } async setResponseAsync(bodyStream, fromCache) { if (!bodyStream) { this._throwInvalidResponse(); } return this._parseResponseDefaultAsync(bodyStream); } get isReadRequest() { return false; } getRaftUniqueRequestId() { return RaftIdGenerator_js_1.RaftIdGenerator.newId(); } } exports.CreateDatabaseCommand = CreateDatabaseCommand; //# sourceMappingURL=CreateDatabaseOperation.js.map