Request data from database service
This commit is contained in:
parent
94fa55c2a1
commit
29d2688278
@ -28,41 +28,48 @@ self.addEventListener('message', async (event) => {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
event.source.postMessage({ status: 'error', message: error.message });
|
event.source.postMessage({ status: 'error', message: error.message });
|
||||||
}
|
}
|
||||||
} else if (data.type === 'ADD_OBJECT') {
|
|
||||||
try {
|
|
||||||
const { storeName, object, key } = data.payload;
|
|
||||||
const db = await openDatabase();
|
|
||||||
const tx = db.transaction(storeName, 'readwrite');
|
|
||||||
const store = tx.objectStore(storeName);
|
|
||||||
|
|
||||||
if (key) {
|
|
||||||
await store.put(object, key);
|
|
||||||
} else {
|
|
||||||
await store.put(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
event.ports[0].postMessage({ status: 'success', message: '' });
|
|
||||||
} catch (error) {
|
|
||||||
event.ports[0].postMessage({ status: 'error', message: error.message });
|
|
||||||
}
|
|
||||||
} else if (data.type === 'BATCH_WRITING') {
|
|
||||||
const { storeName, objects } = data.payload;
|
|
||||||
const db = await openDatabase();
|
|
||||||
const tx = db.transaction(storeName, 'readwrite');
|
|
||||||
const store = tx.objectStore(storeName);
|
|
||||||
|
|
||||||
for (const { key, object } of objects) {
|
|
||||||
if (key) {
|
|
||||||
await store.put(object, key);
|
|
||||||
} else {
|
|
||||||
await store.put(object);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await tx.done;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// DATABASE COMMUNICATION
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
async function requestFromMainThread(client, action, payload) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const messageId = `sw_${Date.now()}_${Math.random()}`;
|
||||||
|
|
||||||
|
const messageHandler = (event) => {
|
||||||
|
if (event.data.id === messageId) {
|
||||||
|
self.removeEventListener('message', messageHandler);
|
||||||
|
if (event.data.type === 'DB_RESPONSE') {
|
||||||
|
resolve(event.data.result);
|
||||||
|
} else if (event.data.type === 'DB_ERROR') {
|
||||||
|
reject(new Error(event.data.error));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.addEventListener('message', messageHandler);
|
||||||
|
|
||||||
|
client.postMessage({
|
||||||
|
type: 'DB_REQUEST',
|
||||||
|
id: messageId,
|
||||||
|
action,
|
||||||
|
payload
|
||||||
|
});
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
self.removeEventListener('message', messageHandler);
|
||||||
|
reject(new Error('Database request timeout'));
|
||||||
|
}, 10000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// SCAN LOGIC
|
||||||
|
// ============================================
|
||||||
|
|
||||||
async function scanMissingData(processesToScan) {
|
async function scanMissingData(processesToScan) {
|
||||||
console.log('Scanning for missing data...');
|
console.log('Scanning for missing data...');
|
||||||
const myProcesses = await getProcesses(processesToScan);
|
const myProcesses = await getProcesses(processesToScan);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user