diff --git a/gdb/orm/orm.go b/gdb/orm/orm.go index d7bc6e1..aca135b 100644 --- a/gdb/orm/orm.go +++ b/gdb/orm/orm.go @@ -54,6 +54,29 @@ type ConnectionConfig struct { DatabaseValidations bool } +type DbOption struct { + Type string + Dsn string + MaxIdle int + MaxOpen int +} + +func NewDb(opt DbOption) (*sql.DB, error) { + db, err := sql.Open(opt.Type, opt.Dsn) + if err != nil { + return nil, err + } + if opt.Type == "sqlite3" { + if opt.Dsn == ":memory:" { + db.SetMaxOpenConns(1) + } + } else { + db.SetMaxIdleConns(opt.MaxIdle) + db.SetMaxOpenConns(opt.MaxOpen) + } + return db, nil +} + // SetupConnections declares a new connections for ORM. func SetupConnections(configs ...ConnectionConfig) error { diff --git a/go.mod b/go.mod index 15a9383..bab2421 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module git.hexq.cn/tiglog/golib go 1.20 require ( + github.com/DATA-DOG/go-sqlmock v1.5.0 github.com/casbin/casbin/v2 v2.70.0 github.com/gin-gonic/gin v1.9.1 github.com/go-redis/redis/v8 v8.11.5 @@ -19,6 +20,7 @@ require ( go.mongodb.org/mongo-driver v1.11.7 go.uber.org/zap v1.25.0 golang.org/x/crypto v0.10.0 + golang.org/x/sys v0.9.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -65,7 +67,6 @@ require ( golang.org/x/arch v0.3.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.9.0 // indirect golang.org/x/text v0.10.0 // indirect golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect google.golang.org/protobuf v1.30.0 // indirect diff --git a/go.sum b/go.sum index 1d220e3..4a62c8d 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,6 @@ git.sr.ht/~nelsam/hel v0.4.3 h1:9W0zz8zv8CZhFsp8r9Wq6c8gFemBdtMurjZU/JKfvfM= +github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= +github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=