Spaces:
Running
Running
| 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); | |
| }); | |
| } |