You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.0 KiB
JavaScript
96 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function (module) {
|
|
var helpers = require('../helpers');
|
|
|
|
module.sortedSetRemove = async function (key, value) {
|
|
if (!key) {
|
|
return;
|
|
}
|
|
const isValueArray = Array.isArray(value);
|
|
if (!value || (isValueArray && !value.length)) {
|
|
return;
|
|
}
|
|
|
|
if (!Array.isArray(key)) {
|
|
key = [key];
|
|
}
|
|
|
|
if (!isValueArray) {
|
|
value = [value];
|
|
}
|
|
value = value.map(helpers.valueToString);
|
|
await module.pool.query({
|
|
name: 'sortedSetRemove',
|
|
text: `
|
|
DELETE FROM "legacy_zset"
|
|
WHERE "_key" = ANY($1::TEXT[])
|
|
AND "value" = ANY($2::TEXT[])`,
|
|
values: [key, value],
|
|
});
|
|
};
|
|
|
|
module.sortedSetsRemove = async function (keys, value) {
|
|
if (!Array.isArray(keys) || !keys.length) {
|
|
return;
|
|
}
|
|
|
|
value = helpers.valueToString(value);
|
|
|
|
await module.pool.query({
|
|
name: 'sortedSetsRemove',
|
|
text: `
|
|
DELETE FROM "legacy_zset"
|
|
WHERE "_key" = ANY($1::TEXT[])
|
|
AND "value" = $2::TEXT`,
|
|
values: [keys, value],
|
|
});
|
|
};
|
|
|
|
module.sortedSetsRemoveRangeByScore = async function (keys, min, max) {
|
|
if (!Array.isArray(keys) || !keys.length) {
|
|
return;
|
|
}
|
|
|
|
if (min === '-inf') {
|
|
min = null;
|
|
}
|
|
if (max === '+inf') {
|
|
max = null;
|
|
}
|
|
|
|
await module.pool.query({
|
|
name: 'sortedSetsRemoveRangeByScore',
|
|
text: `
|
|
DELETE FROM "legacy_zset"
|
|
WHERE "_key" = ANY($1::TEXT[])
|
|
AND ("score" >= $2::NUMERIC OR $2::NUMERIC IS NULL)
|
|
AND ("score" <= $3::NUMERIC OR $3::NUMERIC IS NULL)`,
|
|
values: [keys, min, max],
|
|
});
|
|
};
|
|
|
|
module.sortedSetRemoveBulk = async function (data) {
|
|
// const keys = [];
|
|
// const values = [];
|
|
|
|
// data.forEach(function (item) {
|
|
// keys.push(item[0]);
|
|
// values.push(item[1]);
|
|
// });
|
|
|
|
const promises = data.map(item => module.sortedSetRemove(item[0], item[1]));
|
|
await Promise.all(promises);
|
|
|
|
// TODO
|
|
// await query({
|
|
// name: 'sortedSetRemoveBulk',
|
|
// text: `
|
|
// DELETE FROM "legacy_zset"
|
|
// SELECT k, v
|
|
// FROM UNNEST($1::TEXT[], $2::TEXT[]) vs(k, v)`,
|
|
// values: [keys, values],
|
|
// });
|
|
};
|
|
};
|