| // This worker is used for one of the tests in test-sqlite-session.js |
| |
| 'use strict'; |
| require('../common'); |
| const { parentPort, workerData } = require('worker_threads'); |
| const { DatabaseSync, constants } = require('node:sqlite'); |
| const { changeset, mode, dbPath } = workerData; |
| |
| const db = new DatabaseSync(dbPath); |
| |
| const options = {}; |
| if (mode !== constants.SQLITE_CHANGESET_ABORT && mode !== constants.SQLITE_CHANGESET_OMIT) { |
| throw new Error('Unexpected value for mode'); |
| } |
| options.onConflict = () => mode; |
| |
| try { |
| const result = db.applyChangeset(changeset, options); |
| parentPort.postMessage({ mode, result, error: null }); |
| } catch (error) { |
| parentPort.postMessage({ mode, result: null, errorMessage: error.message, errcode: error.errcode }); |
| } finally { |
| db.close(); // Just to make sure it is closed ASAP |
| } |