feat: add null tests for sorted sets

This commit is contained in:
Barış Soner Uşaklı
2020-05-09 10:38:56 -04:00
parent 8c8cdc9946
commit edf9fe3b7f
4 changed files with 42 additions and 3 deletions

View File

@@ -52,7 +52,8 @@ module.exports = function (module) {
return;
}
const isArrayOfScores = Array.isArray(scores);
if (!isArrayOfScores && !utils.isNumber(scores)) {
if ((!isArrayOfScores && !utils.isNumber(scores)) ||
(isArrayOfScores && scores.map(s => utils.isNumber(s)).includes(false))) {
throw new Error('[[error:invalid-score, ' + scores + ']]');
}
@@ -75,6 +76,9 @@ module.exports = function (module) {
}
var bulk = module.client.collection('objects').initializeUnorderedBulkOp();
data.forEach(function (item) {
if (!utils.isNumber(item[1])) {
throw new Error('[[error:invalid-score, ' + item[1] + ']]');
}
bulk.find({ _key: item[0], value: String(item[2]) }).upsert().updateOne({ $set: { score: parseFloat(item[1]) } });
});
await bulk.execute();

View File

@@ -69,7 +69,8 @@ DO UPDATE SET "score" = EXCLUDED."score"`,
return;
}
const isArrayOfScores = Array.isArray(scores);
if (!isArrayOfScores && !utils.isNumber(scores)) {
if ((!isArrayOfScores && !utils.isNumber(scores)) ||
(isArrayOfScores && scores.map(s => utils.isNumber(s)).includes(false))) {
throw new Error('[[error:invalid-score, ' + scores + ']]');
}
@@ -108,6 +109,9 @@ INSERT INTO "legacy_zset" ("_key", "value", "score")
const values = [];
const scores = [];
data.forEach(function (item) {
if (!utils.isNumber(item[1])) {
throw new Error('[[error:invalid-score, ' + item[1] + ']]');
}
keys.push(item[0]);
scores.push(item[1]);
values.push(item[2]);

View File

@@ -42,7 +42,8 @@ module.exports = function (module) {
return;
}
const isArrayOfScores = Array.isArray(scores);
if (!isArrayOfScores && !utils.isNumber(scores)) {
if ((!isArrayOfScores && !utils.isNumber(scores)) ||
(isArrayOfScores && scores.map(s => utils.isNumber(s)).includes(false))) {
throw new Error('[[error:invalid-score, ' + scores + ']]');
}
@@ -65,6 +66,9 @@ module.exports = function (module) {
}
var batch = module.client.batch();
data.forEach(function (item) {
if (!utils.isNumber(item[1])) {
throw new Error('[[error:invalid-score, ' + item[1] + ']]');
}
batch.zadd(item[0], item[1], item[2]);
});
await helpers.execBatch(batch);