From 324ba1efdec3e90549eb26b7a661e38864e425ae Mon Sep 17 00:00:00 2001 From: Amy Date: Sat, 27 Nov 2021 22:54:46 -0500 Subject: [PATCH] Refactor getAllBooks into promisified non-API function --- {pages/api => lib}/books.ts | 23 +++++++---------------- pages/index.tsx | 22 +++++++++++++++++----- 2 files changed, 24 insertions(+), 21 deletions(-) rename {pages/api => lib}/books.ts (54%) diff --git a/pages/api/books.ts b/lib/books.ts similarity index 54% rename from pages/api/books.ts rename to lib/books.ts index 1a127f9..92db791 100644 --- a/pages/api/books.ts +++ b/lib/books.ts @@ -1,34 +1,25 @@ -import { NextApiRequest, NextApiResponse } from "next"; import sqlite3 from "sqlite3"; const DATABASE_PATH = "catalogue.db"; -export default function getAllBooks( - request: NextApiRequest, - response: NextApiResponse -) { - if (request.method !== "GET") { - response.status(405); - return; - } - +export async function getAllBooks() { const database = new sqlite3.Database(DATABASE_PATH, sqlite3.OPEN_READONLY); - try { + const books = new Promise((resolve, reject) => { database.all( "SELECT title, authors, isbn FROM books", (error: Error | null, rows: SimpleBook[]) => { if (error) { - throw error; + reject(error); } - response.status(200).json(rows); + resolve(rows); } ); - } catch (error) { - response.status(500); - } + }); database.close(); + + return books; } export interface SimpleBook { diff --git a/pages/index.tsx b/pages/index.tsx index cf73651..f1972f9 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,8 +1,20 @@ -import type { NextPage } from "next"; import React from "react"; -const Home: NextPage = () => { - return
I am a book
; -}; +import { getAllBooks, SimpleBook } from "../lib/books"; -export default Home; +export default function Home(props: Props) { + console.log(props.books); + return
I am a book
; +} + +interface Props { + books: SimpleBook[]; +} + +export async function getServerSideProps() { + return { + props: { + books: await getAllBooks(), + }, + }; +}