GetProducts
Implements GetProducts Unified Method.
Source
import { getNormalizers } from "@alokai/connect/integration-kit";
import type { GraphQL, Product } from "@vsf-enterprise/bigcommerce-api";
import { defineApi } from "@vsf-enterprise/unified-api-bigcommerce";
export const getProducts = defineApi.getProducts(async (context, args) => {
const { normalizeProductCatalogItem } = getNormalizers(context);
const { currency } = context.config.normalizerContext;
const { api } = await context.getApiClient();
const productsData = await api.getProducts({
"id:in": args.ids ? args.ids.map((id) => Number.parseInt(id)) : undefined,
"sku:in": args.skus ?? undefined,
});
if (productsData.data?.length === 0) {
return { products: [] };
}
const entityIds = productsData.data.map((product) => product.id);
const productResponse = await api.getProductsById({
currencyCode: currency as GraphQL.CurrencyCode,
entityIds,
});
const products = productResponse.data.map((product: Product) =>
normalizeProductCatalogItem(product),
);
return { products };
});