feat: allow optional fields argument on db.getObject(s) (#9385)

This commit is contained in:
Barış Soner Uşaklı
2021-03-14 11:40:54 -04:00
committed by GitHub
parent 754965b572
commit 4327a09d76
9 changed files with 53 additions and 18 deletions

View File

@@ -61,17 +61,17 @@ module.exports = function (module) {
await module.setObject(key, data);
};
module.getObject = async function (key) {
module.getObject = async function (key, fields = []) {
if (!key) {
return null;
}
const data = await module.getObjects([key]);
const data = await module.getObjects([key], fields);
return data && data.length ? data[0] : null;
};
module.getObjects = async function (keys) {
return await module.getObjectsFields(keys, []);
module.getObjects = async function (keys, fields = []) {
return await module.getObjectsFields(keys, fields);
};
module.getObjectField = async function (key, field) {

View File

@@ -70,11 +70,13 @@ module.exports = function (module) {
});
};
module.getObject = async function (key) {
module.getObject = async function (key, fields = []) {
if (!key) {
return null;
}
if (fields.length) {
return await module.getObjectFields(key, fields);
}
const res = await module.pool.query({
name: 'getObject',
text: `
@@ -91,11 +93,13 @@ SELECT h."data"
return res.rows.length ? res.rows[0].data : null;
};
module.getObjects = async function (keys) {
module.getObjects = async function (keys, fields = []) {
if (!Array.isArray(keys) || !keys.length) {
return [];
}
if (fields.length) {
return await module.getObjectsFields(keys, fields);
}
const res = await module.pool.query({
name: 'getObjects',
text: `
@@ -170,7 +174,9 @@ SELECT (SELECT jsonb_object_agg(f, d."value")
if (!Array.isArray(keys) || !keys.length) {
return [];
}
if (!fields.length) {
return await module.getObjects(keys);
}
const res = await module.pool.query({
name: 'getObjectsFields',
text: `

View File

@@ -61,17 +61,17 @@ module.exports = function (module) {
cache.del(key);
};
module.getObject = async function (key) {
module.getObject = async function (key, fields = []) {
if (!key) {
return null;
}
const data = await module.getObjectsFields([key], []);
const data = await module.getObjectsFields([key], fields);
return data && data.length ? data[0] : null;
};
module.getObjects = async function (keys) {
return await module.getObjectsFields(keys, []);
module.getObjects = async function (keys, fields = []) {
return await module.getObjectsFields(keys, fields);
};
module.getObjectField = async function (key, field) {