UNPKG

godot-sqlite-kysely

Version:

Kysely dialect for godot-sqlite. Adds SQLite support to Godot/GodotJS.

103 lines (102 loc) 3.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeWorker = initializeWorker; const godot_lib_api_1 = require("godot.lib.api"); const godot_worker_1 = require("godot.worker"); const utils_1 = require("../utils"); let sqlite = null; function postResponse(message) { return godot_worker_1.JSWorkerParent.postMessage(message); } function initializeWorker() { if (!godot_worker_1.JSWorkerParent) { return; } godot_worker_1.JSWorkerParent.close = () => { if (!sqlite) { return; } sqlite.close_db(); sqlite = null; }; godot_worker_1.JSWorkerParent.onmessage = (request) => { switch (request.type) { case 'initialize': if (sqlite) { postResponse({ type: 'initializationError', message: 'Worker already initialized', }); } else { try { sqlite = (0, utils_1.createSQLiteConnection)(request.config); postResponse({ type: 'initialized', }); } catch (e) { postResponse({ type: 'initializationError', message: e && typeof e === 'object' && 'message' in e && typeof e.message === 'string' ? e.message : 'Failed to initialize worker connection', }); } } break; case 'query': { const { id, query, parameters } = request; if (!sqlite) { postResponse({ type: 'queryError', id, message: 'Worker not initialized', }); break; } try { const bindings = typeof parameters === 'undefined' || Array.isArray(parameters) ? godot_lib_api_1.GArray.create(parameters ?? []) : parameters; if (sqlite.query_with_bindings(query, bindings)) { postResponse({ type: 'queryResult', id, result: { rows: (0, utils_1.getResultRows)(sqlite), }, }); } else { postResponse({ type: 'queryError', id, message: sqlite.error_message, }); } } catch (e) { postResponse({ type: 'queryError', id, message: e && typeof e === 'object' && 'message' in e && typeof e.message === 'string' ? e.message : 'Failed to perform query', }); } break; } case 'terminate': sqlite?.close_db(); sqlite = null; postResponse({ type: 'terminated', }); break; default: console.error('Unhandled worker request: ' + JSON.stringify(request, null, 2)); break; } }; }