summaryrefslogtreecommitdiff
path: root/src/pages/api/shop
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-11-15 14:55:57 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-11-15 14:55:57 +0700
commit36c6e0361762cb0faff10996e30737a58cf14284 (patch)
tree4cb225b8f106c5ea2ce1d929fc8af0b9757ea0e4 /src/pages/api/shop
parentc69b71c16ff7cc7a347394710d069ef711db08bb (diff)
parent7ca8fce4ac97ffc31042dd4d016460a5e61284a5 (diff)
Merge branch 'new-release' of https://bitbucket.org/altafixco/next-indoteknik into new-release
Diffstat (limited to 'src/pages/api/shop')
-rw-r--r--src/pages/api/shop/brands.js39
1 files changed, 29 insertions, 10 deletions
diff --git a/src/pages/api/shop/brands.js b/src/pages/api/shop/brands.js
index 9c2824b3..219f2cb0 100644
--- a/src/pages/api/shop/brands.js
+++ b/src/pages/api/shop/brands.js
@@ -1,8 +1,20 @@
import axios from 'axios';
+import { createClient } from 'redis';
const SOLR_HOST = process.env.SOLR_HOST;
+const client = createClient();
+
+client.on('error', (err) => console.error('Redis Client Error', err));
+
+const connectRedis = async () => {
+ if (!client.isOpen) {
+ await client.connect();
+ }
+};
export default async function handler(req, res) {
+ await connectRedis();
+
try {
let params = '*:*';
let sort =
@@ -11,12 +23,12 @@ export default async function handler(req, res) {
if (req.query.params) {
rows = 100;
- switch (req?.query?.params) {
+ switch (req.query.params) {
case 'level_s':
params = 'level_s:prioritas';
break;
case 'search':
- params = `name_s:"${req?.query?.q.toLowerCase()}"`;
+ params = `name_s:"${req.query.q.toLowerCase()}"`;
sort = '';
rows = 1;
break;
@@ -24,11 +36,20 @@ export default async function handler(req, res) {
params = `name_s:${req.query.params}`.toLowerCase();
}
}
- if(req.query.rows) rows = req.query.rows;
-
+ if (req.query.rows) rows = req.query.rows;
+
+ const cacheKey = `brands_home`;
+ let cachedData = await client.get(cacheKey);
+
+ if (cachedData) {
+ return res.status(200).json(JSON.parse(cachedData));
+ }
+
const url = `${SOLR_HOST}/solr/brands/select?q=${params}&q.op=OR&indent=true&rows=${rows}&${sort}`;
- let brands = await axios(url);
- let dataBrands = responseMap(brands.data.response.docs);
+ const brands = await axios(url);
+ const dataBrands = responseMap(brands.data.response.docs);
+
+ await client.set(cacheKey, JSON.stringify(dataBrands), 'EX', 259200);
res.status(200).json(dataBrands);
} catch (error) {
@@ -39,13 +60,11 @@ export default async function handler(req, res) {
const responseMap = (brands) => {
return brands.map((brand) => {
- let brandMapping = {
+ return {
id: brand.id,
name: brand.display_name_s,
logo: brand.image_s || '',
- sequance: brand.sequence_i || '',
+ sequence: brand.sequence_i || '',
};
-
- return brandMapping;
});
};