export function buildBaseFilters()

in packages/search-ui-engines-connector/src/handlers/search/Configuration.ts [53:99]


export function buildBaseFilters(baseFilters: Filter[]): BaseFilters {
  const filters = (baseFilters || []).reduce((acc, filter) => {
    const boolType = {
      all: "filter",
      any: "should",
      none: "must_not"
    }[filter.type];
    return [
      ...acc,
      {
        bool: {
          [boolType]: filter.values.map((value: FilterValue) => {
            if (isRangeFilter(value)) {
              return {
                range: {
                  [filter.field]: {
                    ...("from" in value
                      ? {
                          from: isValidDateString(value.from)
                            ? value.from
                            : Number(value.from)
                        }
                      : {}),
                    ...("to" in value
                      ? {
                          to: isValidDateString(value.to)
                            ? value.to
                            : Number(value.to)
                        }
                      : {})
                  }
                }
              };
            }
            return {
              term: {
                [filter.field]: value
              }
            };
          })
        }
      }
    ];
  }, []);

  return filters;
}