Call api route to get all products

This commit is contained in:
DuvCharles 2022-11-10 11:18:35 +01:00
parent 8b2c415e1a
commit 1ad05673a2

View File

@ -1,24 +1,36 @@
import { Product } from '@vercel/commerce/types/product'
import { GetAllProductsOperation } from '@vercel/commerce/types/product'
import type { OperationContext } from '@vercel/commerce/api/operations'
import type { LocalConfig, Provider } from '../index'
import type { Provider, SyliusConfig } from '../index'
import { SyliusProduct } from '../../types'
import { normalizeProduct } from '../../utils/normalize'
export default function getAllProductsOperation({
commerce,
}: OperationContext<any>) {
async function getAllProducts<T extends GetAllProductsOperation>({
query = '',
variables,
config,
}: OperationContext<Provider>) {
async function getAllProducts(opts?: {
variables?: any
config?: Partial<SyliusConfig>
preview?: boolean
}): Promise<{ products: Product[] }>
async function getAllProducts({
config: cfg,
variables = { first: 250 },
}: {
query?: string
variables?: T['variables']
config?: Partial<LocalConfig>
variables?: any
config?: Partial<SyliusConfig>
preview?: boolean
} = {}): Promise<{ products: Product[] | any[] }> {
} = {}): Promise<{ products: Product[] }> {
const config = commerce.getConfig(cfg)
const syliusProducts = await config.fetch('GET', '/products')
const products = syliusProducts.map((syliusProduct: SyliusProduct) =>
normalizeProduct(syliusProduct)
)
return {
products: [],
products,
}
}
return getAllProducts
}