import Dexie from “dexie”
export default class KeyValueStore {
static current() { if (!window.currentKeyValueStore) window.currentKeyValueStore = new KeyValueStore() return window.currentKeyValueStore } static async get(key) { return await KeyValueStore.current().get(key) } static async set(key, value) { return await KeyValueStore.current().set(key, value) } constructor() { this.database = new Dexie("KeyValueStoreDatabase") this.database.version(1).stores({ keyValues: "++id, key, value" }) } async get(key) { var row = await this.database.keyValues.where("key").equals(key).first() if (row) return row.value } async set(key, value) { var row = await this.database.keyValues.where("key").equals(key).first() if (row) { await this.database.keyValues.update(row.id, {value: value}) } else { await this.database.keyValues.add({ key: key, value: value }) } return true }
}