ravendb
Version:
RavenDB client for Node.js
98 lines • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ServerNode = void 0;
const UriUtility_js_1 = require("./UriUtility.js");
const Topology_js_1 = require("./Topology.js");
class ServerNode {
database;
url;
clusterTag = null;
serverRole;
supportsAtomicClusterWrites;
_lastServerVersionCheck = 0;
_lastServerVersion;
constructor(opts) {
if (opts) {
this.database = opts.database;
this.url = opts.url;
this.clusterTag = opts.clusterTag;
}
}
shouldUpdateServerVersion() {
if (!this._lastServerVersion || this._lastServerVersionCheck > 100) {
return true;
}
this._lastServerVersionCheck++;
return false;
}
updateServerVersion(serverVersion) {
this._lastServerVersion = serverVersion;
this._lastServerVersionCheck = 0;
this.supportsAtomicClusterWrites = false;
if (serverVersion) {
const tokens = serverVersion.split(".");
try {
const major = Number.parseInt(tokens[0], 10);
const minor = Number.parseInt(tokens[1], 10);
if (major > 5 || (major === 5 && minor >= 2)) {
this.supportsAtomicClusterWrites = true;
}
}
catch {
// ignore
}
}
}
discardServerVersion() {
this._lastServerVersion = null;
this._lastServerVersionCheck = 0;
}
static createFrom(topology, etag) {
const newTopology = new Topology_js_1.Topology();
newTopology.etag = etag;
newTopology.nodes = [];
newTopology.promotables = [];
if (!topology) {
return newTopology;
}
for (const node of Object.keys(topology.members)) {
const member = topology.members[node];
newTopology.nodes.push(new ServerNode({
url: member,
clusterTag: node,
serverRole: "Member"
}));
}
for (const node of Object.keys(topology.watchers)) {
const watcher = topology.watchers[node];
newTopology.nodes.push(new ServerNode({
url: watcher,
clusterTag: node,
serverRole: "Member"
}));
}
return newTopology;
}
get lastServerVersion() {
return this._lastServerVersion;
}
get isSecure() {
return UriUtility_js_1.UriUtility.isSecure(this.url);
}
fromJson(json) {
const from = json;
this.url = from.Url;
this.database = from.Database || null;
this.clusterTag = from.ClusterTag || null;
}
static fromJson(json) {
const node = new ServerNode({
database: "",
url: ""
});
node.fromJson(json);
return node;
}
}
exports.ServerNode = ServerNode;
//# sourceMappingURL=ServerNode.js.map