diff --git a/src/library.ts b/src/library.ts new file mode 100644 index 0000000..cc7a367 --- /dev/null +++ b/src/library.ts @@ -0,0 +1,37 @@ +import { invoke } from "@tauri-apps/api/core"; +import { isDesktop } from "./ipc"; +import { type Book, createBook, starterBook } from "./model/book"; + +export interface BookSummary { + id: string; + title: string; + author: string; +} + +export async function listBooks(): Promise { + if (!isDesktop) return []; + return invoke("list_books"); +} + +export async function loadBook(id: string): Promise { + const contents = await invoke("load_book", { id }); + return JSON.parse(contents) as Book; +} + +export async function saveBook(book: Book): Promise { + if (!isDesktop) return; + await invoke("save_book", { id: book.id, contents: JSON.stringify(book, null, 2) }); +} + +export async function deleteBook(id: string): Promise { + if (!isDesktop) return; + await invoke("delete_book", { id }); +} + +export function newBook(): Book { + return createBook(); +} + +export function exampleBook(): Book { + return starterBook(); +}