Source: where.js

const _ = require('lodash')

/**
 * Exports the where function.
 * @module sql-processors/where
 * @requires lodash
 */

/**
 * Executes the SQL WHERE statement on an Array of Objects.
 * @param {Object} condition
 * @param {Array} data
 * @returns {Array}
 */

const where = (condition, data) => {
  if (condition) {
    switch (condition.operator) {
      case '=':
        return _.filter(data, { [condition.lhs]: condition.rhs })
      case '<>':
        return _.filter(data, item => item[condition.lhs] !== condition.rhs)
      case '>':
        return _.filter(data, item => item[condition.lhs] > condition.rhs)
      case '<':
        return _.filter(data, item => item[condition.lhs] < condition.rhs)
      case '>=':
        return _.filter(data, item => item[condition.lhs] >= condition.rhs)
      case '<=':
        return _.filter(data, item => item[condition.lhs] <= condition.rhs)
    }
  }
  return data
}

module.exports = where