import { GetServerSideProps, NextPage } from 'next'; import getAllBeerPosts from '@/services/BeerPost/getAllBeerPosts'; import BeerPostQueryResult from '@/services/BeerPost/types/BeerPostQueryResult'; import Link from 'next/link'; import { useRouter } from 'next/router'; import DBClient from '@/prisma/DBClient'; import Layout from '@/components/Layout'; import { FC } from 'react'; import Image from 'next/image'; interface BeerPageProps { initialBeerPosts: BeerPostQueryResult[]; pageCount: number; } interface PaginationProps { pageNum: number; pageCount: number; } const Pagination: FC = ({ pageCount, pageNum }) => { const router = useRouter(); return (
); }; const BeerCard: FC<{ post: BeerPostQueryResult }> = ({ post }) => { return (
{post.beerImages.length > 0 && ( {post.name} )}

{post.name}

{post.brewery.name}

{post.description}

); }; 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;