Vue Storefront is now Alokai! Learn More
GetProducts

GetProducts

Implements GetProducts Unified Method.

Source

import { getNormalizers } from "@alokai/connect/integration-kit";
import { getLogger } from "@alokai/connect/middleware";

import { defineApi } from "@vsf-enterprise/unified-api-magento";
import type { ProductWithTypeName } from "@vsf-enterprise/unified-api-magento/ecommerceTypes";

export const getProducts = defineApi.getProducts(async (context, args) => {
  const { api } = await context.getApiClient();
  const { ids, skus = [] } = args;
  const logger = getLogger(context);
  if (ids?.length) {
    logger.warning("getProducts(): ids argument is not supported");
  }

  if (skus.length === 0) {
    return {
      products: [],
    };
  }

  const responseData = await api.products({ filter: { sku: { in: skus } } });
  const responseProducts = responseData.data.products?.items ?? [];

  const { normalizeProductCatalogItem } = getNormalizers(context);

  const products = responseProducts
    .filter(Boolean)
    .map((product) => normalizeProductCatalogItem(product as ProductWithTypeName));

  return {
    products,
  };
});