summaryrefslogtreecommitdiff
path: root/src/pages/api/flashsale-header.js
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2024-11-25 03:07:05 +0000
committerIT Fixcomart <it@fixcomart.co.id>2024-11-25 03:07:05 +0000
commitf254d47618ddfd2c1e37a51562b9728d62bd8eb6 (patch)
tree8b7d9837fbb0e3029b1b2461ce916330b3744591 /src/pages/api/flashsale-header.js
parente52f0ee9516d8601ffc92df9c085c2eee763c55c (diff)
parent4d1dd6ad5b22ffb02e4347cf3159f10988fd7c03 (diff)
Merged in CR/redis_v2 (pull request #383)
<iman> redis v2
Diffstat (limited to 'src/pages/api/flashsale-header.js')
-rw-r--r--src/pages/api/flashsale-header.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/pages/api/flashsale-header.js b/src/pages/api/flashsale-header.js
new file mode 100644
index 00000000..31f8efdd
--- /dev/null
+++ b/src/pages/api/flashsale-header.js
@@ -0,0 +1,40 @@
+import odooApi from '@/core/api/odooApi';
+import { createClient } from 'redis';
+
+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) {
+ try {
+ await connectRedis();
+ const cacheKey = `flashsale_header`;
+ // await client.del(cacheKey);
+ let cachedData = await client.get(cacheKey);
+
+ if (cachedData) {
+ const data = JSON.parse(cachedData);
+ return res.status(200).json({ data });
+ } else {
+ const flashSale = await odooApi('GET', `/api/v1/flashsale/header`);
+
+ await client.set(
+ cacheKey,
+ JSON.stringify(flashSale),
+ 'EX',
+ flashSale.duration
+ );
+ cachedData = await client.get(cacheKey);
+ return res.status(200).json({ data: cachedData });
+ }
+ } catch (error) {
+ console.error('Error interacting with Redis or fetching data:', error);
+ return res.status(500).json({ error: 'Internal Server Error' });
+ }
+}