myrpg / db.js
Dippergl231's picture
Create db.js
29c27ed verified
Raw
History Blame Contribute Delete
1.53 kB
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);
});
}