import { Eno } from "./models/Eno";
import { EnoFactory } from "./EnoFactory";

export type IVars = { [key: string]: string[] };

function varToEno(key: string, value: string[]): Eno {
  const enoFactory = new EnoFactory("var", "security/policy/everyone");
  enoFactory.setFields([
    { tip: "var/key", value: [key] },
    { tip: "var/value", value: value },
  ]);
  return enoFactory.makeEno();
}

export function varsToEnos(vars: IVars): Eno[] {
  return Object.keys(vars).map((key) => varToEno(key, vars[key]));
}

export function enosToVars(batch: Eno[]): IVars {
  const vars: IVars = {};
  batch
    .filter((eno) => eno.source.type === "var")
    .forEach(
      (eno) =>
        (vars[eno.getFieldStringValue("var/key")] =
          eno.getFieldValues("var/value"))
    );
  return vars;
}
