From 7b096fe79a3666e3aa8605866d59fee3dd1242da Mon Sep 17 00:00:00 2001 From: Reimar Date: Tue, 14 Oct 2025 09:09:19 +0200 Subject: [PATCH] rename gesundheit, implement add operation --- src/{gesundheit.js => asset_store.js} | 25 +++++++++---------------- src/index.js | 6 +++--- 2 files changed, 12 insertions(+), 19 deletions(-) rename src/{gesundheit.js => asset_store.js} (63%) diff --git a/src/gesundheit.js b/src/asset_store.js similarity index 63% rename from src/gesundheit.js rename to src/asset_store.js index 2138146..c5bfbae 100644 --- a/src/gesundheit.js +++ b/src/asset_store.js @@ -1,18 +1,17 @@ -export class Gesundheit { +export class AssetStore { static #isInternalConstructing = false; static #idb = globalThis.indexedDB; constructor(db) { - if (!Gesundheit.#isInternalConstructing) { + if (!AssetStore.#isInternalConstructing) { throw new TypeError("Gesundheit is not constructable - use Gesundheit.load()"); } - Gesundheit.#isInternalConstructing = false; + AssetStore.#isInternalConstructing = false; this.db = db; } - async doSomethingOrOtter() { - console.log(this.db.objectStoreNames); + async add(name, mime, bytes) { const transaction = this.db.transaction(["asset"], "readwrite"); return await new Promise((resolve, reject) => { @@ -24,12 +23,9 @@ export class Gesundheit { reject(); }; - const assetStore = transaction.objectStore("asset"); - const _req = assetStore.add({ - name: "idk", - mime: "idk", - bytes: [], - }, "asset"); + const objectStore = transaction.objectStore("asset"); + + objectStore.add({ name, mime, bytes }); }); } @@ -45,12 +41,9 @@ export class Gesundheit { req.onupgradeneeded = () => { const db = req.result; - const assetStore = db.createObjectStore("asset", { + db.createObjectStore("asset", { keyPath: "name", }); - - assetStore.createIndex("mime", "mime", { unique: false }); - assetStore.createIndex("bytes", "bytes", { unique: false }); }; req.onsuccess = () => { @@ -58,6 +51,6 @@ export class Gesundheit { }; }); this.#isInternalConstructing = true; - return new Gesundheit(db); + return new AssetStore(db); } } diff --git a/src/index.js b/src/index.js index f12cbb8..9fe232b 100644 --- a/src/index.js +++ b/src/index.js @@ -14,7 +14,7 @@ import { TextCompleter } from "./text_completer.js"; import { ConsoleInput } from "./console_input.js"; import { downloadFile, slugify } from "./utils.js"; import { HtmlExporter } from "./html_exporter.js"; -import { Gesundheit } from "./gesundheit.js"; +import { AssetStore } from "./asset_store.js"; const editor = ace.edit("editor"); editor.setTheme("ace/theme/gruvbox"); @@ -154,6 +154,6 @@ addEventListener("keydown", (ev) => { toggleAssetEditorButton.addEventListener("click", () => assetEditor.toggleEditor()); -const gsh = await Gesundheit.load("assetdb"); +const assetStore = await AssetStore.load("assetdb"); -await gsh.doSomethingOrOtter(); +await assetStore.add("test", "image/png", []);