mirror of
https://github.com/vercel/commerce.git
synced 2025-07-27 04:01:23 +00:00
WIP POC in progress
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
import { Product } from '@commerce/types/product'
|
||||
import { GetAllProductsOperation } from '@commerce/types/product'
|
||||
import type { Product } from '@commerce/types/product'
|
||||
import type { GetAllProductsOperation } from '@commerce/types/product'
|
||||
import type { OperationContext } from '@commerce/api/operations'
|
||||
import type { RawProduct } from '@framework/types/product'
|
||||
import type { OrdercloudConfig, Provider } from '../index'
|
||||
import {
|
||||
PriceSchedule,
|
||||
RawProduct,
|
||||
RawProductWithPrice,
|
||||
} from '@framework/types/product'
|
||||
|
||||
import { normalize as normalizeProduct } from '@framework/utils/product'
|
||||
|
||||
export default function getAllProductsOperation({
|
||||
@@ -26,19 +23,11 @@ export default function getAllProductsOperation({
|
||||
'GET',
|
||||
'/products'
|
||||
).then((response) => response.Items)
|
||||
const rawProductsWithPrice: RawProductWithPrice[] = await Promise.all(
|
||||
rawProducts.map(async (product) => ({
|
||||
...product,
|
||||
priceSchedule: await fetch<PriceSchedule>(
|
||||
'GET',
|
||||
`/priceschedules/${product.ID}`
|
||||
),
|
||||
}))
|
||||
)
|
||||
|
||||
return {
|
||||
products: rawProductsWithPrice.map(normalizeProduct),
|
||||
products: rawProducts.map(normalizeProduct),
|
||||
}
|
||||
}
|
||||
|
||||
return getAllProducts
|
||||
}
|
||||
|
@@ -1,24 +1,32 @@
|
||||
import type { OrdercloudConfig } from '../index'
|
||||
import { Product } from '@commerce/types/product'
|
||||
import { GetProductOperation } from '@commerce/types/product'
|
||||
import data from '../../data.json'
|
||||
import type { OperationContext } from '@commerce/api/operations'
|
||||
import type { RawProduct } from '@framework/types/product'
|
||||
import type { Product } from '@commerce/types/product'
|
||||
import type { GetProductOperation } from '@commerce/types/product'
|
||||
import type { OrdercloudConfig, Provider } from '../index'
|
||||
|
||||
import { normalize as normalizeProduct } from '@framework/utils/product'
|
||||
|
||||
export default function getProductOperation({
|
||||
commerce,
|
||||
}: OperationContext<any>) {
|
||||
}: OperationContext<Provider>) {
|
||||
async function getProduct<T extends GetProductOperation>({
|
||||
query = '',
|
||||
variables,
|
||||
config,
|
||||
variables,
|
||||
}: {
|
||||
query?: string
|
||||
variables?: T['variables']
|
||||
config?: Partial<OrdercloudConfig>
|
||||
preview?: boolean
|
||||
} = {}): Promise<Product | {} | any> {
|
||||
} = {}): Promise<{ product: Product }> {
|
||||
const { fetch } = commerce.getConfig(config)
|
||||
|
||||
const rawProduct: RawProduct = await fetch<RawProduct>(
|
||||
'GET',
|
||||
`/products/${variables?.slug}`
|
||||
)
|
||||
|
||||
return {
|
||||
product: null // data.products.find(({ slug }) => slug === variables!.slug),
|
||||
product: normalizeProduct(rawProduct),
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user