From d7136c6e2f38d91051cf5d81b334eb6487a2108b Mon Sep 17 00:00:00 2001 From: lew Date: Mon, 23 Mar 2026 18:02:18 +0000 Subject: [PATCH] chore(idb): basic crud ops --- src/lib/storage.ts | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/lib/storage.ts diff --git a/src/lib/storage.ts b/src/lib/storage.ts new file mode 100644 index 0000000..02e4671 --- /dev/null +++ b/src/lib/storage.ts @@ -0,0 +1,46 @@ +import { openDB, type DBSchema } from 'idb'; +import type { Character, Template } from './types'; + +interface RecordsDB extends DBSchema { + characters: { key: string; value: Character }; + templates: { key: string; value: Template }; +} + +const dbPromise = openDB('aurora-records', 1, { + upgrade(db) { + db.createObjectStore('characters', { keyPath: 'id' }); + db.createObjectStore('templates', { keyPath: 'id' }); + } +}); + +export async function getAllCharacters() { + return (await dbPromise).getAll('characters'); +} + +export async function getCharacter(id: string) { + return (await dbPromise).get('characters', id); +} + +export async function saveCharacter(char: Character) { + await (await dbPromise).put('characters', char); +} + +export async function deleteCharacter(id: string) { + await (await dbPromise).delete('characters', id); +} + +export async function getAllTemplates() { + return (await dbPromise).getAll('templates'); +} + +export async function getTemplate(id: string) { + return (await dbPromise).get('templates', id); +} + +export async function saveTemplate(tmpl: Template) { + await (await dbPromise).put('templates', tmpl); +} + +export async function deleteTemplate(id: string) { + await (await dbPromise).delete('templates', id); +}