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 { Product } from '@vercel/commerce/types/product'
import { GetAllProductsOperation } from '@vercel/commerce/types/product'
import type { OperationContext } from '@vercel/commerce/api/operations' 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({ export default function getAllProductsOperation({
commerce, commerce,
}: OperationContext<any>) { }: OperationContext<Provider>) {
async function getAllProducts<T extends GetAllProductsOperation>({ async function getAllProducts(opts?: {
query = '', variables?: any
variables, config?: Partial<SyliusConfig>
config, preview?: boolean
}): Promise<{ products: Product[] }>
async function getAllProducts({
config: cfg,
variables = { first: 250 },
}: { }: {
query?: string query?: string
variables?: T['variables'] variables?: any
config?: Partial<LocalConfig> config?: Partial<SyliusConfig>
preview?: boolean 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 { return {
products: [], products,
} }
} }
return getAllProducts return getAllProducts
} }