convert sylius product to commerce product

This commit is contained in:
DuvCharles 2022-11-10 11:17:45 +01:00
parent b414f4f708
commit b4c088f4ca
2 changed files with 56 additions and 1 deletions

View File

@ -1,4 +1,5 @@
export { default as handleFetchResponse } from './handle-fetch-response' export { default as handleFetchResponse } from './handle-fetch-response'
export * from './normalize'
/* /*
export { default as getSearchVariables } from './get-search-variables' export { default as getSearchVariables } from './get-search-variables'
@ -13,6 +14,5 @@ export { default as handleAccountActivation } from './handle-account-activation'
export { default as throwUserErrors } from './throw-user-errors' export { default as throwUserErrors } from './throw-user-errors'
export * from './queries' export * from './queries'
export * from './mutations' export * from './mutations'
export * from './normalize'
export * from './customer-token' export * from './customer-token'
*/ */

View File

@ -0,0 +1,55 @@
import {
Product,
ProductImage,
ProductPrice,
ProductVariant,
} from '@vercel/commerce/types/product'
import {
SyliusProduct,
SyliusProductImage,
SyliusProductVariant,
} from '../types'
export const normalizeProduct = (product: SyliusProduct): Product => {
return {
id: product.id.toString(),
name: product.name,
description: product.description,
images: product.images.map((image) => normalizeProductImage(image)),
variants: product.variants.map((variant) =>
normalizeProductVariant(variant)
),
price: normalizeProductPrice(
product.variants[0].price,
product.variants[0].originalPrice
),
options: [],
}
}
const normalizeProductVariant = (
variant: SyliusProductVariant
): ProductVariant => {
return {
id: variant.id,
options: [],
availableForSale: variant.inStock,
}
}
const normalizeProductImage = (image: SyliusProductImage): ProductImage => {
return {
url: process.env.NEXT_PUBLIC_SYLIUS_ALLOWED_IMAGE_URL + image.path,
}
}
const normalizeProductPrice = (
price: number,
originalPrice: number
): ProductPrice => {
return {
value: originalPrice / 100,
salePrice: price / 100,
currencyCode: 'EUR',
}
}