From 5165f824e19a98a92d8207dfa74a3536743e3fa4 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Fri, 16 Oct 2020 11:25:13 -0500 Subject: [PATCH 1/2] Change date_modified sort with id --- lib/bigcommerce/api/catalog/handlers/get-products.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bigcommerce/api/catalog/handlers/get-products.ts b/lib/bigcommerce/api/catalog/handlers/get-products.ts index 6cb289c3d..0f845d771 100644 --- a/lib/bigcommerce/api/catalog/handlers/get-products.ts +++ b/lib/bigcommerce/api/catalog/handlers/get-products.ts @@ -5,7 +5,7 @@ import getAllProducts, { import type { ProductsHandlers } from '../products' const SORT: { [key: string]: string | undefined } = { - latest: 'date_modified', + latest: 'id', trending: 'total_sold', price: 'price', } From 6d241937d9f29474304425195ff1f7781b8a0725 Mon Sep 17 00:00:00 2001 From: Luis Alvarez Date: Fri, 16 Oct 2020 21:45:52 -0500 Subject: [PATCH 2/2] Updated api handler --- lib/bigcommerce/api/cart/index.ts | 2 +- lib/bigcommerce/api/catalog/products.ts | 2 +- lib/bigcommerce/api/checkout.ts | 2 +- lib/bigcommerce/api/customers.ts | 2 +- .../api/utils/create-api-handler.ts | 23 ++++++++++++++----- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/bigcommerce/api/cart/index.ts b/lib/bigcommerce/api/cart/index.ts index 8c307dda8..f2f174b84 100644 --- a/lib/bigcommerce/api/cart/index.ts +++ b/lib/bigcommerce/api/cart/index.ts @@ -109,4 +109,4 @@ const cartApi: BigcommerceApiHandler = async ( export const handlers = { getCart, addItem, updateItem, removeItem } -export default createApiHandler(cartApi, handlers) +export default createApiHandler(cartApi, handlers, {}) diff --git a/lib/bigcommerce/api/catalog/products.ts b/lib/bigcommerce/api/catalog/products.ts index eb53bea41..f3c01d934 100644 --- a/lib/bigcommerce/api/catalog/products.ts +++ b/lib/bigcommerce/api/catalog/products.ts @@ -45,4 +45,4 @@ const cartApi: BigcommerceApiHandler< export const handlers = { getProducts } -export default createApiHandler(cartApi, handlers) +export default createApiHandler(cartApi, handlers, {}) diff --git a/lib/bigcommerce/api/checkout.ts b/lib/bigcommerce/api/checkout.ts index 531f6d9e4..aab7c0d7a 100644 --- a/lib/bigcommerce/api/checkout.ts +++ b/lib/bigcommerce/api/checkout.ts @@ -73,4 +73,4 @@ const checkoutApi: BigcommerceApiHandler = async (req, res, config) => { } } -export default createApiHandler(checkoutApi, {}) +export default createApiHandler(checkoutApi, {}, {}) diff --git a/lib/bigcommerce/api/customers.ts b/lib/bigcommerce/api/customers.ts index a70f0a5b4..c4734c6e5 100644 --- a/lib/bigcommerce/api/customers.ts +++ b/lib/bigcommerce/api/customers.ts @@ -53,4 +53,4 @@ const handlers = { createCustomer, } -export default createApiHandler(customersApi, handlers) +export default createApiHandler(customersApi, handlers, {}) diff --git a/lib/bigcommerce/api/utils/create-api-handler.ts b/lib/bigcommerce/api/utils/create-api-handler.ts index 0e4a1b959..2cb91c534 100644 --- a/lib/bigcommerce/api/utils/create-api-handler.ts +++ b/lib/bigcommerce/api/utils/create-api-handler.ts @@ -3,12 +3,15 @@ import { BigcommerceConfig, getConfig } from '..' export type BigcommerceApiHandler< T = any, - H extends BigcommerceHandlers = {} + H extends BigcommerceHandlers = {}, + Options extends {} = {} > = ( req: NextApiRequest, res: NextApiResponse>, config: BigcommerceConfig, - handlers: H + handlers: H, + // Custom configs that may be used by a particular handler + options: Options ) => void | Promise export type BigcommerceHandler = (options: { @@ -27,21 +30,29 @@ export type BigcommerceApiResponse = { errors?: { message: string }[] } -export default function createApiHandler( - handler: BigcommerceApiHandler, - handlers: H +export default function createApiHandler< + T = any, + H extends BigcommerceHandlers = {}, + Options extends {} = {} +>( + handler: BigcommerceApiHandler, + handlers: H, + defaultOptions: Options ) { return function getApiHandler({ config, operations, + options, }: { config?: BigcommerceConfig operations?: Partial + options?: Options extends {} ? Partial : never } = {}): NextApiHandler { const ops = { ...operations, ...handlers } + const opts = { ...defaultOptions, ...options } return function apiHandler(req, res) { - return handler(req, res, getConfig(config), ops) + return handler(req, res, getConfig(config), ops, opts) } } }