|
| 1 | +const startSqlite3 = async function(messageId, callback) { |
| 2 | + const {default: sqlite3InitModule} = await import ("../dependencies/sqlite3/sqlite3.mjs"); |
| 3 | + try { |
| 4 | + self.sqlite3InitModule({ |
| 5 | + print: self.console.log, |
| 6 | + printErr: self.console.error |
| 7 | + }).then((sqlite3) => callback(sqlite3)); |
| 8 | + } catch (e) { |
| 9 | + self.postMessage({messageId: messageId, type: "error", result: e}); |
| 10 | + } |
| 11 | +} |
| 12 | + |
| 13 | +const checkOpfs = function(sqlite3) { |
| 14 | + if (sqlite3.oo1.OpfsDb) { |
| 15 | + self.workerSqlite3 = sqlite3; |
| 16 | + self.postMessage({messageId: 'start-sqlite3', type: 'ok'}); |
| 17 | + } else { |
| 18 | + self.postMessage({messageId: 'start-sqlite3', type: "error", result: "No Opfs"}); |
| 19 | + } |
| 20 | +} |
| 21 | + |
| 22 | +const restoreDb = function(sqlite3, arrayBuffer) { |
| 23 | + try { |
| 24 | + sqlite3.oo1.OpfsDb.importDb('main.db', arrayBuffer); |
| 25 | + self.postMessage({messageId: 'restore-db', type: "ok"}); |
| 26 | + } catch (e) { |
| 27 | + self.postMessage({messageId: messageId, type: "error", result: e}); |
| 28 | + } |
| 29 | +} |
| 30 | + |
| 31 | +onmessage = function (msgEvent) { |
| 32 | + const msg = msgEvent.data; |
| 33 | + |
| 34 | + if (msg.messageId === 'restore-db') { |
| 35 | + startSqlite3(msg.messageId, (sqlite3) => restoreDb(sqlite3, msg.args.arrayBuffer)); |
| 36 | + } else if (msg.messageId === 'start-sqlite3') { |
| 37 | + startSqlite3(msg.messageId, checkOpfs); |
| 38 | + } else if (msg.messageId === 'init-worker-api') { |
| 39 | + self.workerSqlite3.initWorker1API(); |
| 40 | + } |
| 41 | +}; |
0 commit comments