const DB_NAME = 'MYRPG_Database'; const DB_VERSION = 1; export function openDB() { return new Promise((resolve, reject) => { const request = indexedDB.open(DB_NAME, DB_VERSION); request.onupgradeneeded = (e) => { const db = e.target.result; if (!db.objectStoreNames.contains('characters')) { db.createObjectStore('characters', { keyPath: 'id' }); } if (!db.objectStoreNames.contains('prefabs')) { db.createObjectStore('prefabs', { keyPath: 'id' }); } if (!db.objectStoreNames.contains('lorebook')) { db.createObjectStore('lorebook', { keyPath: 'id' }); } if (!db.objectStoreNames.contains('rulebooks')) { db.createObjectStore('rulebooks', { keyPath: 'id' }); } }; request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); }); } export async function getAll(storeName) { const db = await openDB(); return new Promise((resolve) => { const tx = db.transaction(storeName, 'readonly'); const store = tx.objectStore(storeName); const req = store.getAll(); req.onsuccess = () => resolve(req.result); }); } export async function putItem(storeName, item) { const db = await openDB(); return new Promise((resolve, reject) => { const tx = db.transaction(storeName, 'readwrite'); const store = tx.objectStore(storeName); const req = store.put(item); req.onsuccess = () => resolve(req.result); req.onerror = () => reject(req.error); }); }