From 487b6b91bd7c78eb4cb61d9bfcebf4bd768eb961 Mon Sep 17 00:00:00 2001 From: dm1sh Date: Sat, 31 Jul 2021 22:00:27 +0300 Subject: [PATCH] Added book list handler in service worker --- src/serviceWorker/db.ts | 5 +++++ src/serviceWorker/fetchHandlers.ts | 11 ++++++++++- src/serviceWorker/index.ts | 8 +++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/serviceWorker/db.ts b/src/serviceWorker/db.ts index 4fb8aa5..7e18992 100644 --- a/src/serviceWorker/db.ts +++ b/src/serviceWorker/db.ts @@ -18,3 +18,8 @@ export const openDB = () => */ export const saveBook = async (book: BookT) => (await openDB()).add("Books", book); + +/** + * Returns all books saved in IndexedDB + */ +export const getBooks = async () => (await openDB()).getAll("Books"); diff --git a/src/serviceWorker/fetchHandlers.ts b/src/serviceWorker/fetchHandlers.ts index d29f578..b21bea7 100644 --- a/src/serviceWorker/fetchHandlers.ts +++ b/src/serviceWorker/fetchHandlers.ts @@ -1,4 +1,4 @@ -import { saveBook } from "./db"; +import { getBooks, saveBook } from "./db"; export interface PathHandler { /** Path start for handler */ @@ -34,3 +34,12 @@ export const handleBookUpload = async (request: Request) => { return new Response(JSON.stringify(err)); } }; + +/** + * Gets all books from database + */ +export const handleBooks = async () => { + const list = await getBooks(); + + return new Response(JSON.stringify(list)); +}; diff --git a/src/serviceWorker/index.ts b/src/serviceWorker/index.ts index 835c112..48c8189 100644 --- a/src/serviceWorker/index.ts +++ b/src/serviceWorker/index.ts @@ -1,6 +1,11 @@ import { fromCache, precache } from "./cache"; import { openDB as createDB } from "./db"; -import { handle, handleBookUpload, PathHandler } from "./fetchHandlers"; +import { + handle, + handleBooks, + handleBookUpload, + PathHandler, +} from "./fetchHandlers"; declare const self: ServiceWorkerGlobalScope; @@ -17,6 +22,7 @@ self.addEventListener("fetch", (event) => { const handlers: PathHandler[] = [ { path: "/upload", getResponse: () => handleBookUpload(request) }, + { path: "/list", getResponse: () => handleBooks() }, { path: "", getResponse: () => fromCache(request) }, ];