ravendb
Version:
RavenDB client for Node.js
38 lines • 1.42 kB
JavaScript
export class ClientShardHelper {
static toShardName(database, shardNumber) {
if (ClientShardHelper.isShardName(database)) {
throw new Error("Expected a non shard name but got " + database);
}
if (shardNumber < 0) {
throw new Error("Shard number must be non-negative");
}
return database + "$" + shardNumber;
}
static toDatabaseName(shardName) {
const shardNumberPosition = shardName.indexOf("$");
if (shardNumberPosition === -1) {
return shardName;
}
return shardName.substring(0, shardNumberPosition);
}
static tryGetShardNumberAndDatabaseName(databaseName) {
const index = databaseName.indexOf("$");
let shardNumber = -1;
let shardedDatabaseName;
if (index !== -1) {
const slice = databaseName.substring(index + 1);
shardedDatabaseName = databaseName.substring(0, index);
shardNumber = parseInt(slice, 10);
return [shardedDatabaseName, shardNumber];
}
return null;
}
static getShardNumberFromDatabaseName(databaseName) {
const result = ClientShardHelper.tryGetShardNumberAndDatabaseName(databaseName);
return result ? result[1] : null;
}
static isShardName(shardName) {
return shardName.includes("$");
}
}
//# sourceMappingURL=ClientShardHelper.js.map