import { GetServerSideProps, NextPage } from 'next'; import getAllBeerPosts from '@/services/BeerPost/getAllBeerPosts'; import BeerPostQueryResult from '@/services/BeerPost/types/BeerPostQueryResult'; import { useRouter } from 'next/router'; import DBClient from '@/prisma/DBClient'; import Layout from '@/components/ui/Layout'; import Pagination from '../../components/BeerIndex/Pagination'; import BeerCard from '../../components/BeerIndex/BeerCard'; interface BeerPageProps { initialBeerPosts: BeerPostQueryResult[]; pageCount: number; } const BeerPage: NextPage = ({ initialBeerPosts, pageCount }) => { const router = useRouter(); const { query } = router; const pageNum = parseInt(query.page_num as string, 10) || 1; return (
{initialBeerPosts.map((post) => { return ; })}
); }; export const getServerSideProps: GetServerSideProps = async (context) => { const { query } = context; const pageNumber = parseInt(query.page_num as string, 10) || 1; const pageSize = 12; const numberOfPosts = await DBClient.instance.beerPost.count(); const pageCount = numberOfPosts ? Math.ceil(numberOfPosts / pageSize) : 0; const beerPosts = await getAllBeerPosts(pageNumber, pageSize); return { props: { initialBeerPosts: JSON.parse(JSON.stringify(beerPosts)), pageCount }, }; }; export default BeerPage;