pagination
This commit is contained in:
13
lib/helper/getDaysUntilEvent.ts
Normal file
13
lib/helper/getDaysUntilEvent.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
export function getDaysUntilEvent(eventDate: Date): number {
|
||||
const today = new Date();
|
||||
const target = new Date(eventDate);
|
||||
|
||||
// Clear time from both dates to ensure accurate full-day difference
|
||||
today.setHours(0, 0, 0, 0);
|
||||
target.setHours(0, 0, 0, 0);
|
||||
|
||||
const diffInMs = target.getTime() - today.getTime();
|
||||
const diffInDays = Math.ceil(diffInMs / (1000 * 60 * 60 * 24));
|
||||
|
||||
return diffInDays;
|
||||
}
|
||||
@@ -79,12 +79,47 @@ export const queries = {
|
||||
return event
|
||||
},
|
||||
|
||||
async fetchGuestBookEntries(amount?: number) {
|
||||
return await prisma.guestBookEntry.findMany({
|
||||
orderBy: amount
|
||||
? { createdAt: 'desc'}
|
||||
: [{ lName: 'asc' }, { fName: 'asc' }],
|
||||
...(amount ? {take: amount} : {})
|
||||
async fetchGuestBookEntries({
|
||||
page,
|
||||
pageSize = 10,
|
||||
newestFirst = false,
|
||||
takeOnlyRecent,
|
||||
}: {
|
||||
page?: number
|
||||
pageSize?: number
|
||||
newestFirst?: boolean
|
||||
takeOnlyRecent?: number // Optional: Just get the latest N
|
||||
}) {
|
||||
// ⏱ Quick recent entries (e.g., homepage)
|
||||
if (takeOnlyRecent) {
|
||||
const entries = await prisma.guestBookEntry.findMany({
|
||||
take: takeOnlyRecent,
|
||||
orderBy: { createdAt: 'desc' },
|
||||
})
|
||||
return entries
|
||||
}
|
||||
|
||||
// 📄 Paginated GuestBook view
|
||||
const skip = ((page ?? 1) - 1) * pageSize
|
||||
|
||||
const [entries, totalCount] = await Promise.all([
|
||||
prisma.guestBookEntry.findMany({
|
||||
skip,
|
||||
take: pageSize,
|
||||
orderBy: newestFirst
|
||||
? { createdAt: 'desc' }
|
||||
: [{ lName: 'asc' }, { fName: 'asc' }],
|
||||
}),
|
||||
prisma.guestBookEntry.count(),
|
||||
])
|
||||
|
||||
const totalPages = Math.ceil(totalCount / pageSize)
|
||||
|
||||
return {
|
||||
entries,
|
||||
totalPages,
|
||||
currentPage: page ?? 1,
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user