From c00ebe94c070c83db6229981be6e68a9967c7c0e Mon Sep 17 00:00:00 2001 From: Anton Harniakou Date: Thu, 5 Jun 2025 08:21:40 +0300 Subject: [PATCH 1/3] Implement Statement.source property for js/bindings --- bindings/javascript/wrapper.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bindings/javascript/wrapper.js b/bindings/javascript/wrapper.js index 7698a8cef..4f150e491 100644 --- a/bindings/javascript/wrapper.js +++ b/bindings/javascript/wrapper.js @@ -177,6 +177,10 @@ class Statement { throw new Error("not implemented"); } + get source() { + return this.stmt.source; + } + get database() { return this.db; } From 6f88505f906d60813442a604d0e9c250a815d8e8 Mon Sep 17 00:00:00 2001 From: Anton Harniakou Date: Thu, 5 Jun 2025 08:21:59 +0300 Subject: [PATCH 2/3] Add tests --- bindings/javascript/__test__/better-sqlite3.spec.mjs | 6 ++++++ bindings/javascript/__test__/limbo.spec.mjs | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/bindings/javascript/__test__/better-sqlite3.spec.mjs b/bindings/javascript/__test__/better-sqlite3.spec.mjs index a271648ba..205872746 100644 --- a/bindings/javascript/__test__/better-sqlite3.spec.mjs +++ b/bindings/javascript/__test__/better-sqlite3.spec.mjs @@ -101,6 +101,12 @@ test("Test Statement.database gets the database object", async t => { t.is(stmt.database, db); }); +test("Test Statement.source", async t => { + const [db] = await connect(":memory:"); + let sql = "CREATE TABLE t (id int)"; + let stmt = db.prepare(sql); + t.is(stmt.source, sql); +}); const connect = async (path) => { const db = new Database(path); diff --git a/bindings/javascript/__test__/limbo.spec.mjs b/bindings/javascript/__test__/limbo.spec.mjs index 51cf204ec..454e095c6 100644 --- a/bindings/javascript/__test__/limbo.spec.mjs +++ b/bindings/javascript/__test__/limbo.spec.mjs @@ -161,6 +161,13 @@ test("Test Statement.database gets the database object", async t => { t.is(stmt.database, db); }); +test("Test Statement.source", async t => { + const [db] = await connect(":memory:"); + let sql = "CREATE TABLE t (id int)"; + let stmt = db.prepare(sql); + t.is(stmt.source, sql); +}); + const connect = async (path) => { const db = new Database(path); return [db]; From 501937921717bb2f6fdbe90d1aa571dede35309f Mon Sep 17 00:00:00 2001 From: Anton Harniakou Date: Fri, 6 Jun 2025 09:16:19 +0300 Subject: [PATCH 3/3] Use another syntax to implement the feature --- bindings/javascript/wrapper.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bindings/javascript/wrapper.js b/bindings/javascript/wrapper.js index 4f150e491..05c5b5a8b 100644 --- a/bindings/javascript/wrapper.js +++ b/bindings/javascript/wrapper.js @@ -173,6 +173,10 @@ class Statement { return this; } + get source() { + return this.stmt.source; + } + get reader() { throw new Error("not implemented"); }