JSFiddle - React, Tailwind, and code Playground
by amrendra kumar
JavaScript
let filteredQueryObjectAnd = [
{
"$or": [
{
"_publish_details": {
"$exists": false
}
},
{
"_publish_environment": {
"$in": [
"super-slow"
]
}
}
]
}
]
let queryObjectAnd = [
{
"_publish_environment": {
"$in": [
"super-slow"
]
}
}
]
let typeValue = "_publish_environment"
const checkForNotPublishedQuery = (query = {}) => {
try {
// {"$or":[{"_publish_details":{"$exists":false}}]}
const { $or: orArray = [] } = query;
const stringifiedOrArray = JSON.stringify(orArray);
if (orArray.length && stringifiedOrArray.match('_publish_details')) {
return true;
}
return false;
} catch (error) {
return false;
}
};
const filterOutAndQuery = (andQuery = [], typeValue) => {
console.log('querytest filterOutAndQuery ~ andQuery = [], typeValue:', { andQuery, typeValue });
const filteredQuery = andQuery.filter((query) => {
if (typeof query == 'object' && Object.keys(query).length === 1 && Object.keys(query)[0] === typeValue) {
return false;
}
if (
typeof query == 'object' &&
Object.keys(query).length === 1 &&
typeValue === '_publish_environment' &&
checkForNotPublishedQuery(query)
) {
return false;
}
return true;
});
return filteredQuery;
};
// take object from filter and override on queryObject
const mergeAndReplaceAndArray = (filteredQueryObjectAnd = [], queryObjectAnd = [], typeValue) => {
console.log('querytest mergeAndReplaceAndArray', { filteredQueryObjectAnd, queryObjectAnd, typeValue });
if (!filteredQueryObjectAnd.length) {
//if filtered Query is empty, remove any...