gadl/library.ts
2023-11-19 22:04:19 +09:00

39 lines
1.1 KiB
TypeScript

import { Database } from "./database";
export type Book = {
id: number;
platform: "dmm-books" | "google-play-books";
readerUrl: string;
};
export function createLibrary(db: Database) {
return {
async add(readerUrl: string) {
const platform = "dmm-books";
await db.run(
`insert into books(reader_url, platform_id) values(?, (select id from platforms where name = ?))`,
readerUrl,
platform,
);
},
async delete(id: number) {
await db.run(`delete from books where id = ?`, id);
},
async get(id: number): Promise<Book | undefined> {
const book: Book | undefined = await db.get(
`select books.id, platforms.name as platform, books.reader_url as readerUrl from books left join platforms on books.platform_id = platforms.id where books.id = ?`,
id,
);
return book;
},
async getBooks(): Promise<Array<Book>> {
const books: Array<Book> = await db.all(
`select books.id, platforms.name as platform, books.reader_url as readerUrl from books left join platforms on books.platform_id = platforms.id`,
);
return books;
},
};
}