Barış Soner Uşaklı 6 years ago
parent 48690a01b9
commit ca1e3a758b

@ -25,9 +25,24 @@ module.exports = function (db, module) {
if (!key) { if (!key) {
return callback(); return callback();
} }
db.collection('objects').findOne({ _key: key }, function (err, item) { if (Array.isArray(key)) {
callback(err, item !== undefined && item !== null); db.collection('objects').find({ _key: { $in: key } }).toArray(function (err, data) {
}); if (err) {
return callback(err);
}
var map = {};
data.forEach(function (item) {
map[item._key] = true;
});
callback(null, key.map(key => !!map[key]));
});
} else {
db.collection('objects').findOne({ _key: key }, function (err, item) {
callback(err, item !== undefined && item !== null);
});
}
}; };
module.delete = function (key, callback) { module.delete = function (key, callback) {

@ -30,21 +30,42 @@ module.exports = function (db, module) {
return callback(); return callback();
} }
query({ if (Array.isArray(key)) {
name: 'exists', query({
text: ` name: 'exists',
SELECT EXISTS(SELECT * text: `
FROM "legacy_object_live" SELECT o."_key" k
WHERE "_key" = $1::TEXT FROM "legacy_object_live" o
LIMIT 1) e`, WHERE o."_key" = ANY($1::TEXT[])`,
values: [key], values: [key],
}, function (err, res) { }, function (err, res) {
if (err) { if (err) {
return callback(err); return callback(err);
} }
callback(null, res.rows[0].e); callback(null, key.map(function (k) {
}); return res.rows.some(function (r) {
return r.k === k;
});
}));
});
} else {
query({
name: 'exists',
text: `
SELECT EXISTS(SELECT *
FROM "legacy_object_live"
WHERE "_key" = $1::TEXT
LIMIT 1) e`,
values: [key],
}, function (err, res) {
if (err) {
return callback(err);
}
callback(null, res.rows[0].e);
});
}
}; };
module.delete = function (key, callback) { module.delete = function (key, callback) {

@ -1,6 +1,8 @@
'use strict'; 'use strict';
module.exports = function (redisClient, module) { module.exports = function (redisClient, module) {
var helpers = module.helpers.redis;
module.flushdb = function (callback) { module.flushdb = function (callback) {
redisClient.send_command('flushdb', [], function (err) { redisClient.send_command('flushdb', [], function (err) {
if (typeof callback === 'function') { if (typeof callback === 'function') {
@ -20,9 +22,15 @@ module.exports = function (redisClient, module) {
}; };
module.exists = function (key, callback) { module.exists = function (key, callback) {
redisClient.exists(key, function (err, exists) { if (Array.isArray(key)) {
callback(err, exists === 1); helpers.multiKeys(redisClient, 'exists', key, function (err, data) {
}); callback(err, data && data.map(exists => exists === 1));
});
} else {
redisClient.exists(key, function (err, exists) {
callback(err, exists === 1);
});
}
}; };
module.delete = function (key, callback) { module.delete = function (key, callback) {

@ -53,6 +53,14 @@ describe('Key methods', function () {
}); });
}); });
it('should work for an array of keys', function (done) {
db.exists(['testKey', 'doesnotexist'], function (err, exists) {
assert.ifError(err);
assert.deepStrictEqual(exists, [true, false]);
done();
});
});
it('should delete a key without error', function (done) { it('should delete a key without error', function (done) {
db.delete('testKey', function (err) { db.delete('testKey', function (err) {
assert.ifError(err); assert.ifError(err);

Loading…
Cancel
Save