type SearchFilterRelation = "eq" | "gt" | "gte" | "lt" | "lte";
export interface SearchFilter {
  // The ES field to filter on
  field: string;
  relation: SearchFilterRelation;
  // The value we want to filter to
  value: string;
  // Human-meaningful text that we're showing in the UI
  displayValue: string;
}

// Maps to translate this to user-friendly text
type SearchFilterField = "type" | "user_count";
const searchFilterFieldTranslations = {
  type: "Instance type",
  // eslint-disable-next-line @typescript-eslint/camelcase
  user_count: "User count",
};
const searchFilterRelationTranslations = {
  eq: "=",
  gt: ">",
  gte: ">=",
  lt: "<",
  lte: "<=",
};

export const getSearchFilterDisplayValue = (field: SearchFilterField, relation: SearchFilterRelation, value: string) =>
  `${searchFilterFieldTranslations[field]} ${searchFilterRelationTranslations[relation]} ${value}`;
