Skip to content

A flexible library for dynamic queries on configuration objects with customizable filters.

License

Notifications You must be signed in to change notification settings

afeiship/config-query

Repository files navigation

config-query

A flexible library for dynamic queries on configuration objects with customizable filters.

version license size download

installation

npm install @jswork/config-query

usage

import ConfigQuery from '@jswork/config-query';

const configs = [
  {
    school_level: null,
    language: "zh-CN",
    key: "yes_or_no",
    value: [
      { label: "是", value: "yes" },
      { label: "否", value: "no" },
    ],
  },
  {
    school_level: null,
    language: "en-US",
    key: "yes_or_no",
    value: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" },
    ],
  },
];

const query = new ConfigQuery(configs);

// select by key
const yes_no_items = query.select({ key: "yes_or_no" });
console.log(yes_no_items);


/* ------------------------------ output ------------------------------
 *  [
 *    {
 *      "school_level": null,
 *      "language": "zh-CN",
 *      "key": "yes_or_no",
 *      "value": [
 *        { "label": "是", "value": "yes" },
 *        { "label": "否", "value": "no" }
 *      ]
 *    },
 *    {
 *      "school_level": null,
 *      "language": "en-US",
 *      "key": "yes_or_no",
 *      "value": [
 *        { "label": "Yes", "value": "yes" },
 *        { "label": "No", "value": "no" }
 *      ]
 *    }
 *  ]
 */


// get by language
const en = query.find({ language: "en-US" });
console.log(en);

/* ------------------------------ output ------------------------------
 *   {
 *     "school_level": null,
 *     "language": "en-US",
 *     "key": "yes_or_no",
 *     "value": [
 *       { "label": "Yes", "value": "yes" },
 *       { "label": "No", "value": "no" }
 *     ]
 *   }
 */


// value filter
const yes = query.value({ key: "yes_or_no", "language": "zh-CN" });
console.log(yes);


/* ------------------------------ output ------------------------------
 *  [ 
 *    { "label": "是", "value": "yes" },
 *    { "label": "否", "value": "no" }
 *  ]
 */

license

Code released under the MIT license.