index.js 2.56 KB
"use client";
import Head from "next/head";
import HomeBanner from "@/container/Home/HomeBanner";
import CollectionSlider from "@/container/Home/Collection";
import Video from "@/container/Home/Video";
import Overview from "@/container/Home/Overview";
import ProjectSlider from "@/container/Home/ProjectSlider";
import { Contact } from "@/container/Home/Contact";
import BlogHome from "@/container/Home/BlogHome";
import Catalogues from "@/container/Home/Catalogues";
import { getCataloguesBySlug } from "@/services/cataloguesApi";
import { getHomeSlug } from "@/services/homeApi";
import { getRedisClient } from "@/redis-client";

const Home = ({ homepage, cataloguesData={cataloguesData}, homeData }) => {

  return (
    <>
      <Head>
        <title>Akruti </title>
        <meta name="description" content="Akruti" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link rel="icon" href="/favicon.ico" />
      </Head>
      <HomeBanner banner={homeData?.banner} />
      <CollectionSlider CollectionData={homeData?.collection} />
      <Video video={homeData?.video} />
      <Overview aboutData={homeData?.about} />
      <ProjectSlider projectData={homeData?.project} />
      <BlogHome />
      <Catalogues cataloguesData={cataloguesData} />
      <Contact />

    </>
  );
};
export default Home;
/* ---------- SSR ---------- */
export async function getServerSideProps({ params }) {
  const redis = getRedisClient();

  // Redis key and expiry
  const REDIS_KEY = `${process.env.REDIS_KEY_PREFIX}_homepage`;
  const REDIS_KEY_CATALOGUES = `${process.env.REDIS_KEY_PREFIX}_catalogues`;
  const REDIS_EXPIRE = parseInt(process.env.REDIS_KEY_EXPIRE) || 86400; // default: 24 hrs

  try {
     const cachedData = await redis.get(REDIS_KEY);
     const cachedCataloguesData = await redis.get(REDIS_KEY_CATALOGUES);
     
     if (cachedData && cachedCataloguesData) {
      console.log('redis data fetched');
      return {
        props: {
          cataloguesData: JSON.parse(cachedCataloguesData),
          homeData: JSON.parse(cachedData),
        },
     }};
    const cataloguesData = await getCataloguesBySlug();
    const homeData = await getHomeSlug();

    await redis.set(REDIS_KEY, JSON.stringify(homeData), "EX", REDIS_EXPIRE);
    await redis.set(REDIS_KEY_CATALOGUES, JSON.stringify(cataloguesData), "EX", REDIS_EXPIRE);
     console.log('normal data fetched');
    return {
      props: {
        cataloguesData,
        homeData
      },
    };
  } catch (error) {
    console.error("Product page SSR error:", error);
    return { notFound: true };
  }
}