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...