Q-Manager/src/storage.ts
2024-11-30 13:08:24 +02:00

61 lines
2.0 KiB
TypeScript

const initializeDB = () => {
return new Promise((resolve, reject) => {
const request = indexedDB.open("FileSystemDB", 1);
request.onupgradeneeded = (event) => {
const db = event.target.result;
if (!db.objectStoreNames.contains("fileSystemQManager")) {
// Create object store with `address` as the keyPath
db.createObjectStore("fileSystemQManager", { keyPath: "address" });
}
};
request.onsuccess = () => resolve(request.result);
request.onerror = (event) => reject(event.target.error);
});
};
export const saveFileSystemQManagerToDB = async ( fileSystemQManager, address) => {
try {
const db = await initializeDB();
const transaction = db.transaction("fileSystemQManager", "readwrite");
const store = transaction.objectStore("fileSystemQManager");
// Save or update data for the specific address
store.put({ address, data: fileSystemQManager });
return new Promise((resolve, reject) => {
transaction.oncomplete = () => resolve(`FileSystemQManager for address ${address} saved successfully`);
transaction.onerror = (event) => reject(event.target.error);
});
} catch (error) {
console.error("Error saving fileSystemQManager to IndexedDB:", error);
}
};
export const getFileSystemQManagerFromDB = async (address) => {
try {
const db = await initializeDB();
const transaction = db.transaction("fileSystemQManager", "readonly");
const store = transaction.objectStore("fileSystemQManager");
return new Promise((resolve, reject) => {
const request = store.get(address);
request.onsuccess = (event) => {
if (event.target.result) {
resolve(event.target.result.data);
} else {
resolve(null); // No data found for this address
}
};
request.onerror = (event) => reject(event.target.error);
});
} catch (error) {
console.error("Error retrieving fileSystemQManager from IndexedDB:", error);
}
};