From 6a4e5201720e0f81b601e1253a1145e431275980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Boche=C5=84ski?= Date: Mon, 20 Oct 2025 18:09:09 +0200 Subject: [PATCH] d1: fix RowsAffected() in sql.Result implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Piotr Bocheński --- cloudflare/d1/result.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/cloudflare/d1/result.go b/cloudflare/d1/result.go index 00fb84ca..e6fcd7f2 100644 --- a/cloudflare/d1/result.go +++ b/cloudflare/d1/result.go @@ -2,7 +2,7 @@ package d1 import ( "database/sql" - "errors" + "fmt" "syscall/js" ) @@ -10,21 +10,24 @@ type result struct { resultObj js.Value } -var ( - _ sql.Result = (*result)(nil) -) +var _ sql.Result = (*result)(nil) // LastInsertId returns id of result's last row. -// If lastRowId can't be retrieved, this method returns error. +// If 'last_row_id' can't be retrieved, this method returns error. func (r *result) LastInsertId() (int64, error) { - v := r.resultObj.Get("meta").Get("last_row_id") - if v.IsNull() || v.IsUndefined() { - return 0, errors.New("d1: lastRowId cannot be retrieved") - } - id := v.Int() - return int64(id), nil + return r.numberFromMeta("last_row_id") } +// RowsAffected returns the number of rows affected by an update, insert, or delete. +// If 'changes' can't be retrieved, this method returns error. func (r *result) RowsAffected() (int64, error) { - return int64(r.resultObj.Get("changes").Int()), nil + return r.numberFromMeta("changes") +} + +func (r *result) numberFromMeta(key string) (int64, error) { + v := r.resultObj.Get("meta").Get(key) + if v.IsNull() || v.IsUndefined() { + return 0, fmt.Errorf("d1: '%s' cannot be retrieved", key) + } + return int64(v.Int()), nil }