Spaces:
Running
Running
File size: 1,528 Bytes
29c27ed | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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);
});
} |