From 2cbe41587e1e9d5acb701abdf71b1fb2a9f6b3a5 Mon Sep 17 00:00:00 2001 From: Star Date: Fri, 12 Dec 2025 21:51:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=BC=82=E5=B8=B8=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db.go | 71 +++++++++++++++++++++++++++++++++++++++++++++------------- go.mod | 10 ++++----- 2 files changed, 60 insertions(+), 21 deletions(-) diff --git a/db.go b/db.go index 4d46c3a..1cd7e57 100644 --- a/db.go +++ b/db.go @@ -97,7 +97,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeQueryResult(r, r.MapResults())) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return nil } }, "querya": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -111,7 +114,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeQueryResult(r, r.SliceResults())) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return nil } }, "query1": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -125,7 +131,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeQueryResult(r, r.MapOnR1())) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return nil } }, "query1a": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -147,7 +156,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { } return vm.ToValue(makeQueryResult(r, nil)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return nil } }, "query11": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -165,7 +177,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { } return vm.ToValue(makeQueryResult(r, nil)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return nil } }, "exec": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -179,7 +194,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeExecResult(r)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return vm.ToValue(false) } }, "insert": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -193,7 +211,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeExecResult(r)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return vm.ToValue(false) } }, "replace": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -207,7 +228,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeExecResult(r)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return vm.ToValue(false) } }, "update": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -221,7 +245,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeExecResult(r)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return vm.ToValue(false) } }, "delete": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -235,7 +262,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any { if r.Error == nil { return vm.ToValue(makeExecResult(r)) } else { - panic(vm.NewGoError(r.Error)) + // panic(vm.NewGoError(r.Error)) + vm.SetData("_lastError", r.Error) + gojs.GetLogger(vm).Error(r.Error.Error()) + return vm.ToValue(false) } }, "makeInKeys": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { @@ -263,7 +293,10 @@ data t `, logger); err == nil { return nil } else { - panic(vm.NewGoError(err)) + // panic(vm.NewGoError(err)) + vm.SetData("_lastError", err) + gojs.GetLogger(vm).Error(err.Error()) + return vm.ToValue(false) } } @@ -280,15 +313,18 @@ data t erDesc = u.ReadFileN(tryFile) } dao.MakeERFile(dbType, erDesc, "", outputFile, logger) - return nil + return vm.ToValue(true) } obj["destroy"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { _, conn, _, _ := initDBArgs(argsIn, vm, 0) if err := conn.Destroy(); err == nil { - return nil + return vm.ToValue(true) } else { - panic(vm.NewGoError(err)) + // panic(vm.NewGoError(err)) + vm.SetData("_lastError", err) + gojs.GetLogger(vm).Error(err.Error()) + return vm.ToValue(false) } } @@ -302,9 +338,12 @@ data t obj["end"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { args, _, tx, _ := initDBArgs(argsIn, vm, 1) if err := tx.Finish(args.Bool(0)); err != nil { - panic(vm.NewGoError(err)) + // panic(vm.NewGoError(err)) + vm.SetData("_lastError", err) + gojs.GetLogger(vm).Error(err.Error()) + return vm.ToValue(false) } - return nil + return vm.ToValue(true) } } return obj diff --git a/go.mod b/go.mod index c84b2a7..5c07664 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,13 @@ module apigo.cc/gojs/db go 1.24.0 require ( - apigo.cc/gojs v0.0.30 + apigo.cc/gojs v0.0.32 apigo.cc/gojs/console v0.0.4 github.com/go-sql-driver/mysql v1.9.3 github.com/jackc/pgx/v5 v5.7.6 github.com/ssgo/dao v0.1.13 github.com/ssgo/db v1.7.13 - github.com/ssgo/log v1.7.9 + github.com/ssgo/log v1.7.10 github.com/ssgo/u v1.7.23 modernc.org/sqlite v1.40.1 ) @@ -35,9 +35,9 @@ require ( github.com/ssgo/tool v0.4.29 // indirect golang.org/x/crypto v0.37.0 // indirect golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc // indirect - golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.38.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect