summaryrefslogtreecommitdiff
path: root/src-migrate/pages/api/product-variant
diff options
context:
space:
mode:
Diffstat (limited to 'src-migrate/pages/api/product-variant')
-rw-r--r--src-migrate/pages/api/product-variant/[id].tsx4
-rw-r--r--src-migrate/pages/api/product-variant/[id]/promotion/[category].tsx51
2 files changed, 53 insertions, 2 deletions
diff --git a/src-migrate/pages/api/product-variant/[id].tsx b/src-migrate/pages/api/product-variant/[id].tsx
index ec95714d..b3bd4096 100644
--- a/src-migrate/pages/api/product-variant/[id].tsx
+++ b/src-migrate/pages/api/product-variant/[id].tsx
@@ -20,13 +20,13 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
return
}
- const variant = await extractVariant(data.response.docs[0], price_tier)
+ const variant = await map(data.response.docs[0], price_tier)
res.status(200).json({ data: variant })
}
}
-const extractVariant = async (variant: any, price_tier: string) => {
+const map = async (variant: any, price_tier: string) => {
const data: any = {}
data.id = parseInt(variant.id)
diff --git a/src-migrate/pages/api/product-variant/[id]/promotion/[category].tsx b/src-migrate/pages/api/product-variant/[id]/promotion/[category].tsx
new file mode 100644
index 00000000..b1207c5e
--- /dev/null
+++ b/src-migrate/pages/api/product-variant/[id]/promotion/[category].tsx
@@ -0,0 +1,51 @@
+import { NextApiRequest, NextApiResponse } from "next";
+import { SolrResponse } from "~/common/types/solr";
+
+const SOLR_HOST = process.env.SOLR_HOST as string
+
+export default async function handler(req: NextApiRequest, res: NextApiResponse) {
+ const productId = req.query.id as string
+ const category = req.query.category as string
+
+ if (req.method === 'GET') {
+ const queryParams = new URLSearchParams({
+ q: `product_ids:${productId}`,
+ fq: `type_value_s:${category}`,
+ rows: '1'
+ })
+
+ const response = await fetch(`${SOLR_HOST}/solr/promotion_program_lines/select?${queryParams.toString()}`)
+ const data: SolrResponse<any[]> = await response.json()
+
+ const promotions = await map(data.response.docs)
+ res.status(200).json({ data: promotions })
+ }
+}
+
+const map = async (promotions: any[]) => {
+ const result = []
+
+ for (const promotion of promotions) {
+ const data: any = {}
+
+ data.id = promotion.id
+ data.program_id = promotion.program_id_i
+ data.name = promotion.name_s
+ data.type = {
+ value: promotion.type_value_s,
+ label: promotion.type_label_s,
+ }
+ data.limit = promotion.package_limit_i
+ data.limit_user = promotion.package_limit_user_i
+ data.limit_trx = promotion.package_limit_trx_i
+ data.price = promotion.price_f
+ data.total_qty = promotion.total_qty_i
+
+ data.products = JSON.parse(promotion.products_s)
+ data.free_products = JSON.parse(promotion.free_products_s)
+
+ result.push(data)
+ }
+
+ return result
+} \ No newline at end of file