WIP POC in progress

This commit is contained in:
goncy
2021-08-09 18:11:00 -03:00
parent f765590484
commit 04f9799636
9 changed files with 143 additions and 67 deletions

View File

@@ -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
}

View File

@@ -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),
}
}