From 2b739b9e7975c91dcb769b071abd33c263a5c1eb Mon Sep 17 00:00:00 2001 From: haex Date: Fri, 7 Nov 2025 01:39:44 +0100 Subject: [PATCH] Improve database query handling with automatic fallback for RETURNING clauses --- package.json | 2 +- src/composables/extensionMessageHandler.ts | 40 ++++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index e530cd7..b204731 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "haex-hub", "private": true, - "version": "0.1.11", + "version": "0.1.12", "type": "module", "scripts": { "build": "nuxt build", diff --git a/src/composables/extensionMessageHandler.ts b/src/composables/extensionMessageHandler.ts index 2cdcb7d..344fb68 100644 --- a/src/composables/extensionMessageHandler.ts +++ b/src/composables/extensionMessageHandler.ts @@ -365,17 +365,37 @@ async function handleDatabaseMethodAsync( switch (request.method) { case 'haextension.db.query': { - const rows = await invoke('extension_sql_select', { - sql: params.query || '', - params: params.params || [], - publicKey: extension.publicKey, - name: extension.name, - }) + try { + const rows = await invoke('extension_sql_select', { + sql: params.query || '', + params: params.params || [], + publicKey: extension.publicKey, + name: extension.name, + }) - return { - rows, - rowsAffected: 0, - lastInsertId: undefined, + return { + rows, + rowsAffected: 0, + lastInsertId: undefined, + } + } catch (error: any) { + // If error is about non-SELECT statements (INSERT/UPDATE/DELETE with RETURNING), + // automatically retry with execute + if (error?.message?.includes('Only SELECT statements are allowed')) { + const rows = await invoke('extension_sql_execute', { + sql: params.query || '', + params: params.params || [], + publicKey: extension.publicKey, + name: extension.name, + }) + + return { + rows, + rowsAffected: rows.length, + lastInsertId: undefined, + } + } + throw error } }