From b4a81e7d9a916f3cb9c82a28d51bc242af3706ce Mon Sep 17 00:00:00 2001 From: DuvCharles Date: Fri, 18 Nov 2022 17:28:33 +0100 Subject: [PATCH] get-all-product-path operation --- .../api/operations/get-all-product-paths.ts | 34 ++++++++++++++++--- .../src/utils/normalize/normalize-product.ts | 2 +- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/packages/sylius/src/api/operations/get-all-product-paths.ts b/packages/sylius/src/api/operations/get-all-product-paths.ts index d8c56cd83..c490520be 100644 --- a/packages/sylius/src/api/operations/get-all-product-paths.ts +++ b/packages/sylius/src/api/operations/get-all-product-paths.ts @@ -1,12 +1,36 @@ +import { OperationContext } from '@vercel/commerce/api/operations' +import type { Product } from '@vercel/commerce/types/product' +import { SyliusConfig } from 'api' +import { SyliusProduct } from 'types/products' +import { normalizeProduct } from '../../utils/normalize/normalize-product' + export type GetAllProductPathsResult = { products: Array<{ path: string }> } -export default function getAllProductPathsOperation() { - function getAllProductPaths(): Promise { - return Promise.resolve({ - products: [], - }) +export default function getAllProductPathsOperation({ + commerce, +}: OperationContext) { + async function getAllProductPaths({ + query, + variables, + config: cfg, + }: { + query?: string + variables?: any + config?: Partial + preview?: boolean + } = {}): Promise { + const config = commerce.getConfig(cfg) + const syliusProducts = await config.fetch('GET', '/products') + const products = syliusProducts.map((syliusProduct: SyliusProduct) => + normalizeProduct(syliusProduct) + ) + return { + products: products.map((product: Product) => ({ + path: product.path, + })), + } } return getAllProductPaths diff --git a/packages/sylius/src/utils/normalize/normalize-product.ts b/packages/sylius/src/utils/normalize/normalize-product.ts index dd8572085..d809a06b6 100644 --- a/packages/sylius/src/utils/normalize/normalize-product.ts +++ b/packages/sylius/src/utils/normalize/normalize-product.ts @@ -21,7 +21,7 @@ export const normalizeProduct = (product: SyliusProduct): Product => { description: product.shortDescription, descriptionHtml: product.description, slug: product.slug, - path: product.slug, + path: `/${product.slug}`, images: product.images.map((image) => normalizeProductImage(image)), variants: product.variants.map((variant) => normalizeProductVariant(variant)