From 099dba4ba9328287bbef79c6bb877401d0804331 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 22 Jul 2025 15:29:02 +0300 Subject: [PATCH] serverless: Add Statement.run() method --- .../integration-tests/serverless.test.mjs | 6 ++++++ packages/turso-serverless/src/statement.ts | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/turso-serverless/integration-tests/serverless.test.mjs b/packages/turso-serverless/integration-tests/serverless.test.mjs index a0419ba87..ddc275656 100644 --- a/packages/turso-serverless/integration-tests/serverless.test.mjs +++ b/packages/turso-serverless/integration-tests/serverless.test.mjs @@ -45,6 +45,12 @@ test.serial('prepare() method creates statement', async t => { t.is(rows[0][1], 'John Doe'); }); +test.serial('Statement.run()', async t => { + const stmt = client.prepare('INSERT INTO test_users (name, email) VALUES (?, ?)'); + const row = await stmt.run(['Jane Doe', 'jane@example.com']); + t.is(row.lastInsertRowid, 2); +}); + test.serial('statement iterate() method works', async t => { // Ensure test data exists await client.execute('CREATE TABLE IF NOT EXISTS test_users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)'); diff --git a/packages/turso-serverless/src/statement.ts b/packages/turso-serverless/src/statement.ts index b285c7fd3..e8dbf2eb0 100644 --- a/packages/turso-serverless/src/statement.ts +++ b/packages/turso-serverless/src/statement.ts @@ -22,6 +22,24 @@ export class Statement { this.sql = sql; } + /** + * Executes the prepared statement. + * + * @param args - Optional array of parameter values for the SQL statement + * @returns Promise resolving to the result of the statement + * + * @example + * ```typescript + * const stmt = client.prepare("INSERT INTO users (name, email) VALUES (?, ?)"); + * const result = await stmt.run(['John Doe', 'john.doe@example.com']); + * console.log(`Inserted user with ID ${result.lastInsertRowid}`); + * ``` + */ + async run(args: any[] = []): Promise { + const result = await this.session.execute(this.sql, args); + return { changes: result.rowsAffected, lastInsertRowid: result.lastInsertRowid }; + } + /** * Execute the statement and return the first row. *