import EleventyFetch from "@11ty/eleventy-fetch"; const { POSTGREST_URL, POSTGREST_API_KEY } = process.env; const fetchAllBooks = async () => { try { return await EleventyFetch( `${POSTGREST_URL}/optimized_books?order=date_finished.desc`, { duration: "1h", type: "json", fetchOptions: { method: "GET", headers: { "Content-Type": "application/json", Authorization: `Bearer ${POSTGREST_API_KEY}`, }, }, }, ); } catch (error) { console.error("Error fetching books:", error); return []; } }; const sortBooksByYear = (books) => { const years = {}; books.forEach((book) => { const year = book.year; if (!years[year]) { years[year] = { value: year, data: [book] }; } else { years[year].data.push(book); } }); return Object.values(years).filter((year) => year.value); }; const currentYear = new Date().getFullYear(); export default async function () { const books = await fetchAllBooks(); const sortedByYear = sortBooksByYear(books); const booksForCurrentYear = sortedByYear .find((yearGroup) => yearGroup.value === currentYear) ?.data.filter((book) => book.status === "finished") || []; return { all: books, years: sortedByYear, currentYear: booksForCurrentYear, feed: books.filter((book) => book.feed), daysRead: books[0]?.days_read }; }