/**
 * Copyright Super iPaaS Integration LLC, an IBM Company 2024
 */
import { BaseAsset } from "../model/assets-model.js";
import { KindEnums } from "@apic/api-model/common/StudioEnums.js";
import { equalsIgnoreCase } from "../helpers/common/data-helper.js";
import { getRefsFromApiAsset } from "./api-asset-handler.js";
import { getRefsFromPolicySeqAsset } from "../helpers/apim/asset-kinds/policy-seq-kind-helper.js";
import { getRefsFromRouteAsset } from "../helpers/apim/asset-kinds/route-kind-helper.js";
import { getRefsFromTestAsset } from "../helpers/apim/asset-kinds/test-kind-helper.js";
import { getRefsFromMockEndpointAsset } from "../helpers/apim/asset-kinds/mockEndpoint-kind-helper.js"
import { AssetCacheModel } from "../model/asset-cache-model.js";
import { getRefsFromPackageAsset } from "../helpers/apim/asset-kinds/package-kind-helper.js"
import { getRefsFromPlanAsset } from "../helpers/apim/asset-kinds/plan-kind-helper.js"
import { STAGED_POLICY_SEQUENCE } from "../constants/app-constants.js";


const getRefsFromAsset = (asset: BaseAsset): AssetCacheModel[] => {
  if (equalsIgnoreCase(asset.kind, KindEnums.API)) {
    return getRefsFromApiAsset(asset);
  } else if (equalsIgnoreCase(asset.kind, STAGED_POLICY_SEQUENCE)) {
    return getRefsFromPolicySeqAsset(asset);
  } else if (equalsIgnoreCase(asset.kind, KindEnums.Route)) {
    return getRefsFromRouteAsset(asset);
  } else if (equalsIgnoreCase(asset.kind, KindEnums.Test)) {
    return getRefsFromTestAsset(asset);
  } else if (equalsIgnoreCase(asset.kind, KindEnums.MockEndpoint)) {
    return getRefsFromMockEndpointAsset(asset);
  } else if (equalsIgnoreCase(asset.kind, KindEnums.Product)) {
    return getRefsFromPackageAsset(asset);
  } else if (equalsIgnoreCase(asset.kind, KindEnums.Plan)) {
    return getRefsFromPlanAsset(asset);
  }
  return [];
};

export { getRefsFromAsset };
