升级异常机制

This commit is contained in:
Star 2025-12-12 21:51:15 +08:00
parent 480250c04c
commit 2cbe41587e
2 changed files with 60 additions and 21 deletions

71
db.go
View File

@ -97,7 +97,10 @@ func makeDBObject(conn *db.DB, tx *db.Tx) map[string]any {
if r.Error == nil { if r.Error == nil {
return vm.ToValue(makeQueryResult(r, r.MapResults())) return vm.ToValue(makeQueryResult(r, r.MapResults()))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeQueryResult(r, r.SliceResults())) return vm.ToValue(makeQueryResult(r, r.SliceResults()))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeQueryResult(r, r.MapOnR1())) return vm.ToValue(makeQueryResult(r, r.MapOnR1()))
} else { } 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 { "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)) return vm.ToValue(makeQueryResult(r, nil))
} else { } 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 { "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)) return vm.ToValue(makeQueryResult(r, nil))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeExecResult(r)) return vm.ToValue(makeExecResult(r))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeExecResult(r)) return vm.ToValue(makeExecResult(r))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeExecResult(r)) return vm.ToValue(makeExecResult(r))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeExecResult(r)) return vm.ToValue(makeExecResult(r))
} else { } 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 { "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 { if r.Error == nil {
return vm.ToValue(makeExecResult(r)) return vm.ToValue(makeExecResult(r))
} else { } 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 { "makeInKeys": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
@ -263,7 +293,10 @@ data t
`, logger); err == nil { `, logger); err == nil {
return nil return nil
} else { } 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) erDesc = u.ReadFileN(tryFile)
} }
dao.MakeERFile(dbType, erDesc, "", outputFile, logger) dao.MakeERFile(dbType, erDesc, "", outputFile, logger)
return nil return vm.ToValue(true)
} }
obj["destroy"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value { obj["destroy"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
_, conn, _, _ := initDBArgs(argsIn, vm, 0) _, conn, _, _ := initDBArgs(argsIn, vm, 0)
if err := conn.Destroy(); err == nil { if err := conn.Destroy(); err == nil {
return nil return vm.ToValue(true)
} else { } 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 { obj["end"] = func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
args, _, tx, _ := initDBArgs(argsIn, vm, 1) args, _, tx, _ := initDBArgs(argsIn, vm, 1)
if err := tx.Finish(args.Bool(0)); err != nil { 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 return obj

10
go.mod
View File

@ -3,13 +3,13 @@ module apigo.cc/gojs/db
go 1.24.0 go 1.24.0
require ( require (
apigo.cc/gojs v0.0.30 apigo.cc/gojs v0.0.32
apigo.cc/gojs/console v0.0.4 apigo.cc/gojs/console v0.0.4
github.com/go-sql-driver/mysql v1.9.3 github.com/go-sql-driver/mysql v1.9.3
github.com/jackc/pgx/v5 v5.7.6 github.com/jackc/pgx/v5 v5.7.6
github.com/ssgo/dao v0.1.13 github.com/ssgo/dao v0.1.13
github.com/ssgo/db v1.7.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 github.com/ssgo/u v1.7.23
modernc.org/sqlite v1.40.1 modernc.org/sqlite v1.40.1
) )
@ -35,9 +35,9 @@ require (
github.com/ssgo/tool v0.4.29 // indirect github.com/ssgo/tool v0.4.29 // indirect
golang.org/x/crypto v0.37.0 // indirect golang.org/x/crypto v0.37.0 // indirect
golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc // indirect golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc // indirect
golang.org/x/sync v0.18.0 // indirect golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.38.0 // indirect golang.org/x/sys v0.39.0 // indirect
golang.org/x/text v0.31.0 // indirect golang.org/x/text v0.32.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
modernc.org/libc v1.66.10 // indirect modernc.org/libc v1.66.10 // indirect
modernc.org/mathutil v1.7.1 // indirect modernc.org/mathutil v1.7.1 // indirect