summaryrefslogtreecommitdiff
path: root/src/pages/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/api')
-rw-r--r--src/pages/api/hero-banner.js4
-rw-r--r--src/pages/api/page-content.js44
-rw-r--r--src/pages/api/shop/brands.js3
3 files changed, 46 insertions, 5 deletions
diff --git a/src/pages/api/hero-banner.js b/src/pages/api/hero-banner.js
index b57f86e0..7a348cfa 100644
--- a/src/pages/api/hero-banner.js
+++ b/src/pages/api/hero-banner.js
@@ -35,8 +35,8 @@ export default async function handler(req, res) {
'EX',
259200
);
-
- return res.status(200).json({ data: dataBannerSections });
+ cachedData = await client.get(cacheKey);
+ return res.status(200).json({ data: cachedData });
}
} catch (error) {
console.error('Error interacting with Redis or fetching data:', error);
diff --git a/src/pages/api/page-content.js b/src/pages/api/page-content.js
new file mode 100644
index 00000000..3cb8a237
--- /dev/null
+++ b/src/pages/api/page-content.js
@@ -0,0 +1,44 @@
+import { createClient } from 'redis';
+import { getPageContent } from '~/services/pageContent';
+// import { fetchCategoryManagementSolr } from '../../lib/home/api/categoryManagementApi';
+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) {
+ const { path } = req.query;
+ try {
+ await connectRedis();
+ // await client.del('onbording-popup');
+
+ let cachedData;
+ if (req.method === 'GET') {
+ cachedData = await client.get(`page-content:${path}`);
+
+ if (!cachedData) {
+ const items = await getPageContent({ path });
+ console.log('items', items);
+ await client.set(
+ `page-content:${path}`,
+ JSON.stringify(items),
+ 'EX',
+ 604800 // Expiry 1 minggu
+ );
+ cachedData = await client.get(`page-content:${path}`);
+ }
+ const data = cachedData ? JSON.parse(cachedData) : null;
+ res.status(200).json({ data });
+ } else {
+ res.setHeader('Allow', ['GET']);
+ res.status(405).end(`Method ${req.method} Not Allowed`);
+ }
+ } catch (error) {
+ console.error('Error interacting with Redis:', error);
+ res.status(500).json({ error: 'Error interacting with Redis' });
+ }
+}
diff --git a/src/pages/api/shop/brands.js b/src/pages/api/shop/brands.js
index 380b3369..219f2cb0 100644
--- a/src/pages/api/shop/brands.js
+++ b/src/pages/api/shop/brands.js
@@ -42,16 +42,13 @@ export default async function handler(req, res) {
let cachedData = await client.get(cacheKey);
if (cachedData) {
- console.log('Retrieving data from Redis cache');
return res.status(200).json(JSON.parse(cachedData));
}
- // Fetch data from Solr
const url = `${SOLR_HOST}/solr/brands/select?q=${params}&q.op=OR&indent=true&rows=${rows}&${sort}`;
const brands = await axios(url);
const dataBrands = responseMap(brands.data.response.docs);
- // Store fetched data in Redis with 3-day expiration
await client.set(cacheKey, JSON.stringify(dataBrands), 'EX', 259200);
res.status(200).json(dataBrands);