Support patching values out of the configuration.

A configuration patch having keys with null values will result
in those keys being removed from the configuration.
This commit is contained in:
D. Berge
2023-09-09 16:53:42 +02:00
parent 04d6cbafe3
commit 38c4125f4f
3 changed files with 27 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
const { setSurvey } = require('../../connection');
const { deepMerge } = require('../../../utils');
const { deepMerge, removeNulls } = require('../../../utils');
const { modify } = require('../create');
@@ -36,7 +36,7 @@ async function patch (projectId, payload, opts = {}) {
}
}
const dest = deepMerge(source, payload);
const dest = removeNulls(deepMerge(source, payload));
await modify(projectId, dest);
return dest;

View File

@@ -4,5 +4,6 @@ module.exports = {
dms: require('./dms'),
replaceMarkers: require('./replaceMarkers'),
flattenQCDefinitions: require('./flattenQCDefinitions'),
deepMerge: require('./deepMerge')
deepMerge: require('./deepMerge'),
removeNulls: require('./removeNulls')
};

View File

@@ -0,0 +1,23 @@
/**
* Delete keys whose value is null.
*
*/
function removeNulls (obj) {
function getType (obj) {
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
for (let [key, value] of Object.entries(obj)) {
if (value === null) {
delete obj[key];
} else if (getType(value) == "object") {
removeNulls(value);
}
}
return obj;
}
module.exports = removeNulls;