import {
  QuickSearchAction,
  QuickSearchActionInput,
  QuickSearchMode
} from "../types";

export function getActions(actions: QuickSearchAction[]): QuickSearchAction[] {
  return actions.filter(action => action.type === "action");
}
export function hasActions(actions: QuickSearchAction[]): boolean {
  return getActions(actions).length > 0;
}

export function getViews(actions: QuickSearchAction[]): QuickSearchAction[] {
  return actions.filter(action => action.type === "view");
}
export function hasViews(actions: QuickSearchAction[]): boolean {
  return getViews(actions).length > 0;
}

export function getCustomers(
  actions: QuickSearchAction[]
): QuickSearchAction[] {
  return actions.filter(action => action.type === "customer");
}
export function hasCustomers(actions: QuickSearchAction[]): boolean {
  return getCustomers(actions).length > 0;
}

export function getCatalog(actions: QuickSearchAction[]): QuickSearchAction[] {
  return actions.filter(action => action.type === "catalog");
}
export function hasCatalog(actions: QuickSearchAction[]): boolean {
  return getCatalog(actions).length > 0;
}

export function sortScores(
  a: QuickSearchActionInput,
  b: QuickSearchActionInput
) {
  return a.score <= b.score ? 1 : -1;
}

export function getMode(command: string): QuickSearchMode {
  switch (command) {
    case ">":
      return "commands";
    case "@":
      return "customers";
    case "#":
      return "orders";
    case "$":
      return "catalog";
    case "?":
      return "help";

    default:
      return null;
  }
}
