/**
 * Fields to be included in the job document indexed in OpenSearch. These fields are used for both indexing and
 * searching.
 * @type {string[]}
 */
const JOB_DOCUMENT_FIELDS = [
  "id",
  "bodyshopid",
  "clm_no",
  "clm_total",
  "comment",
  "dms_id",
  "ins_co_nm",
  "owner_owing",
  "ownr_co_nm",
  "ownr_fn",
  "ownr_ln",
  "ownr_ph1",
  "ownr_ph2",
  "plate_no",
  "ro_number",
  "status",
  "v_model_yr",
  "v_make_desc",
  "v_model_desc",
  "v_vin"
];

/**
 * Fields to be included in the global search query string. These fields are used for constructing the search query.
 * @type {string[]}
 */
const BASE_GLOBAL_SEARCH_QUERY_STRING_FIELDS = [
  "*ro_number^20",
  "*clm_no^14",
  "*v_vin^12",
  "*plate_no^12",
  "*ownr_ln^10",
  "transactionid^10",
  "paymentnum^10",
  "invoice_number^10",
  "*ownr_fn^8",
  "*ownr_co_nm^8",
  "*ownr_ph1^8",
  "*ownr_ph2^8",
  "*vendor.name^8",
  "*comment^6"
];

/**
 * Returns the fields to be included in the global search query string. If Reynolds is enabled, it includes the dms_id
 * field with a higher boost.
 * @param param0
 * @param param0.isReynoldsEnabled
 * @returns {string[]}
 */
const getGlobalSearchQueryStringFields = ({ isReynoldsEnabled = false } = {}) => {
  if (!isReynoldsEnabled) {
    return BASE_GLOBAL_SEARCH_QUERY_STRING_FIELDS;
  }

  return ["*dms_id^20", ...BASE_GLOBAL_SEARCH_QUERY_STRING_FIELDS];
};

module.exports = {
  JOB_DOCUMENT_FIELDS,
  BASE_GLOBAL_SEARCH_QUERY_STRING_FIELDS,
  getGlobalSearchQueryStringFields
};
