zulip/store/idb.js

33 lines
1.1 KiB
JavaScript
Raw Normal View History

2026-03-04 12:23:40 -08:00
// lib/idb.js
import { createStore, get, set, del, entries, clear } from 'idb-keyval'
// Named stores — each maps to a distinct IDBObjectStore
export const itemsStore = createStore('app-db', 'items')
export const userStore = createStore('app-db', 'user')
export const cacheStore = createStore('app-db', 'cache')
// Typed wrappers — keeps raw idb-keyval calls out of the rest of the app
// and gives you one place to add validation, logging, or migration logic
export const db = {
items: {
getAll: () => entries(itemsStore),
get: (id) => get(id, itemsStore),
set: (id, value) => set(id, value, itemsStore),
remove: (id) => del(id, itemsStore),
clear: () => clear(itemsStore),
},
user: {
get: () => get('user', userStore),
set: (value) => set('user', value, userStore),
clear: () => del('user', userStore),
},
cache: {
get: (key) => get(key, cacheStore),
set: (key, value) => set(key, value, cacheStore),
remove: (key) => del(key, cacheStore),
clear: () => clear(cacheStore),
}
}