forked from Qortal/Q-Manager
61 lines
2.0 KiB
TypeScript
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);
|
|
}
|
|
};
|
|
|
|
|