mirror of
https://github.com/vercel/commerce.git
synced 2025-07-04 04:01:21 +00:00
Save primary variant's SKU when normalizing a product from Spree
This commit is contained in:
parent
c3bd932d69
commit
d98a75503d
@ -47,7 +47,8 @@ export default function getAllProductsOperation({
|
||||
arguments: [
|
||||
{},
|
||||
{
|
||||
include: 'variants,images,option_types,variants.option_values',
|
||||
include:
|
||||
'primary_variant,variants,images,option_types,variants.option_values',
|
||||
per_page: first,
|
||||
},
|
||||
],
|
||||
|
@ -54,7 +54,8 @@ export default function getProductOperation({
|
||||
getProductVariables.slug,
|
||||
{},
|
||||
{
|
||||
include: 'variants,images,option_types,variants.option_values',
|
||||
include:
|
||||
'primary_variant,variants,images,option_types,variants.option_values',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
@ -48,7 +48,8 @@ export const handler: SWRHook<SearchProductsHook> = {
|
||||
arguments: [
|
||||
{},
|
||||
{
|
||||
include: 'variants,images,option_types,variants.option_values',
|
||||
include:
|
||||
'primary_variant,variants,images,option_types,variants.option_values',
|
||||
per_page: 50,
|
||||
...filter,
|
||||
...sort,
|
||||
|
@ -14,13 +14,30 @@ import { requireConfigValue } from '@framework/isomorphic-config'
|
||||
import createGetAbsoluteImageUrl from './create-get-absolute-image-url'
|
||||
import expandOptions from './expand-options'
|
||||
import getMediaGallery from './get-media-gallery'
|
||||
import { findIncludedOfType } from './find-json-api-documents'
|
||||
import { findIncluded, findIncludedOfType } from './find-json-api-documents'
|
||||
import getProductPath from './get-product-path'
|
||||
import MissingPrimaryVariantError from '@framework/errors/MissingPrimaryVariantError'
|
||||
|
||||
const normalizeProduct = (
|
||||
spreeSuccessResponse: JsonApiSingleResponse | JsonApiListResponse,
|
||||
spreeProduct: ProductAttr
|
||||
): Product => {
|
||||
const primaryVariantIdentifier = spreeProduct.relationships.primary_variant
|
||||
.data as RelationType
|
||||
const primaryVariant = findIncluded(
|
||||
spreeSuccessResponse,
|
||||
primaryVariantIdentifier.type,
|
||||
primaryVariantIdentifier.id
|
||||
)
|
||||
|
||||
if (primaryVariant === null) {
|
||||
throw new MissingPrimaryVariantError(
|
||||
`Couldn't find primary variant with id ${primaryVariantIdentifier.id}.`
|
||||
)
|
||||
}
|
||||
|
||||
const sku = primaryVariant.attributes.sku
|
||||
|
||||
const spreeImageRecords = findIncludedOfType(
|
||||
spreeSuccessResponse,
|
||||
spreeProduct,
|
||||
@ -95,6 +112,7 @@ const normalizeProduct = (
|
||||
price,
|
||||
slug,
|
||||
path,
|
||||
sku,
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user