mirror of
https://github.com/vercel/commerce.git
synced 2025-05-18 07:26:59 +00:00
get all paths for SSG
This commit is contained in:
parent
181e9520c1
commit
cc424e58b3
@ -1,14 +1,46 @@
|
|||||||
// import data from '../../data.json'
|
import { Product } from '@vercel/commerce/types/product'
|
||||||
|
import { OperationContext } from '@vercel/commerce/api/operations'
|
||||||
|
import { normalizeSearchProducts } from '../utils/normalise-product';
|
||||||
|
import { SFCCConfig } from '..'
|
||||||
|
|
||||||
export type GetAllProductPathsResult = {
|
export type GetAllProductPathsResult = {
|
||||||
products: Array<{ path: string }>
|
products: Array<{ path: string }>
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function getAllProductPathsOperation() {
|
export default function getAllProductPathsOperation({ commerce }: OperationContext<any>) {
|
||||||
function getAllProductPaths(): Promise<GetAllProductPathsResult> {
|
async function getAllProductPaths({
|
||||||
return Promise.resolve({
|
query,
|
||||||
products: [], // TODO: SSG for products
|
config,
|
||||||
})
|
variables,
|
||||||
|
}: {
|
||||||
|
query?: string
|
||||||
|
config?: SFCCConfig
|
||||||
|
variables?: any
|
||||||
|
} = {}): Promise<GetAllProductPathsResult> {
|
||||||
|
|
||||||
|
// TODO: support locale
|
||||||
|
const { sdk, locale } = commerce.getConfig(config) as SFCCConfig
|
||||||
|
const searchClient = await sdk.getSearchClient()
|
||||||
|
|
||||||
|
// use SDK search API for initial products same as getAllProductsOperation
|
||||||
|
const searchResults = await searchClient.productSearch({
|
||||||
|
parameters: { q: "dress", limit: variables?.first },
|
||||||
|
});
|
||||||
|
|
||||||
|
let products = [] as Product[];
|
||||||
|
|
||||||
|
if (searchResults.total) {
|
||||||
|
products = normalizeSearchProducts(searchResults.hits)
|
||||||
|
} else {
|
||||||
|
// TODO: handle this better?
|
||||||
|
console.log("No results for search");
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
products: products?.map(({ slug }: Product) => ({
|
||||||
|
path: `/${slug}`,
|
||||||
|
})),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return getAllProductPaths
|
return getAllProductPaths
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { Product } from '@vercel/commerce/types/product'
|
import { Product } from '@vercel/commerce/types/product'
|
||||||
import { GetAllProductsOperation } 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 { SFCCConfig, Provider } from '../index'
|
import type { SFCCConfig } from '../index'
|
||||||
import { normalizeSearchProducts } from '../utils/normalise-product';
|
import { normalizeSearchProducts } from '../utils/normalise-product';
|
||||||
|
|
||||||
export default function getAllProductsOperation({
|
export default function getAllProductsOperation({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user