mirror of
https://github.com/xxjwxc/public.git
synced 2025-09-26 11:51:14 +08:00
add gorm v2
add gorm v2 tools
This commit is contained in:
2
go.mod
2
go.mod
@@ -38,4 +38,6 @@ require (
|
||||
gopkg.in/eapache/queue.v1 v1.1.0
|
||||
gopkg.in/go-with/wxpay.v1 v1.3.0
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0
|
||||
gorm.io/driver/mysql v1.0.1
|
||||
gorm.io/gorm v1.20.2
|
||||
)
|
||||
|
7
go.sum
7
go.sum
@@ -114,6 +114,8 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jinzhu/now v1.1.1 h1:g39TucaRWyV3dwDO++eEc6qf8TVIQ/Da48WmqjZ3i7E=
|
||||
github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/jroimartin/gocui v0.4.0 h1:52jnalstgmc25FmtGcWqa0tcbMEWS6RpFLsOIO+I+E8=
|
||||
github.com/jroimartin/gocui v0.4.0/go.mod h1:7i7bbj99OgFHzo7kB2zPb8pXLqMBSQegY7azfqXMkyY=
|
||||
@@ -327,6 +329,11 @@ gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gorm.io/driver/mysql v1.0.1 h1:omJoilUzyrAp0xNoio88lGJCroGdIOen9hq2A/+3ifw=
|
||||
gorm.io/driver/mysql v1.0.1/go.mod h1:KtqSthtg55lFp3S5kUXqlGaelnWpKitn4k1xZTnoiPw=
|
||||
gorm.io/gorm v1.9.19/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
|
||||
gorm.io/gorm v1.20.2 h1:bZzSEnq7NDGsrd+n3evOOedDrY5oLM5QPlCjZJUK2ro=
|
||||
gorm.io/gorm v1.20.2/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw=
|
||||
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
|
@@ -1,37 +1,33 @@
|
||||
package mysqldb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/xxjwxc/public/mylog"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
var LogFormatter = func(values ...interface{}) (messages []interface{}) {
|
||||
if len(values) > 1 {
|
||||
var (
|
||||
currentTime = "\t[" + gorm.NowFunc().Format("2006-01-02 15:04:05") + "]"
|
||||
source = fmt.Sprintf("(%v)\t", values[1])
|
||||
)
|
||||
messages = []interface{}{source, currentTime}
|
||||
messages = append(messages, "\t [")
|
||||
messages = append(messages, values[2:]...)
|
||||
messages = append(messages, "]")
|
||||
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
//
|
||||
// DbLog ...
|
||||
type DbLog struct {
|
||||
gorm.Logger
|
||||
}
|
||||
|
||||
//
|
||||
func (db DbLog) Print(values ...interface{}) {
|
||||
msg := LogFormatter(values...)
|
||||
str := fmt.Sprint(msg...)
|
||||
mylog.SaveError(str, "sql")
|
||||
// Write ...
|
||||
func (lg DbLog) Write(p []byte) (n int, err error) {
|
||||
mylog.SaveError(string(p), "sql")
|
||||
return len(p), err
|
||||
}
|
||||
|
||||
// GetDBlog 获取默认logger
|
||||
func GetDBlog() logger.Interface {
|
||||
newLogger := logger.New(
|
||||
log.New(DbLog{}, "\r\n", log.LstdFlags), // io writer
|
||||
logger.Config{
|
||||
SlowThreshold: time.Second, // 慢 SQL 阈值
|
||||
LogLevel: logger.Error, // Log level
|
||||
Colorful: false, // 禁用彩色打印
|
||||
},
|
||||
)
|
||||
return newLogger
|
||||
}
|
||||
|
@@ -1,19 +1,21 @@
|
||||
package mysqldb
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/xxjwxc/public/dev"
|
||||
"github.com/xxjwxc/public/errors"
|
||||
myerrors "github.com/xxjwxc/public/errors"
|
||||
"gorm.io/gorm/logger"
|
||||
|
||||
"github.com/xxjwxc/public/mylog"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/jinzhu/gorm"
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// MySqlDB ...
|
||||
type MySqlDB struct {
|
||||
*gorm.DB
|
||||
IsInit bool
|
||||
}
|
||||
|
||||
// OnInitDBOrm init MySqlDB
|
||||
@@ -27,29 +29,31 @@ func OnInitDBOrm(dataSourceName string) (orm *MySqlDB) {
|
||||
func (i *MySqlDB) OnGetDBOrm(dataSourceName string) *gorm.DB {
|
||||
if i.DB == nil {
|
||||
var err error
|
||||
i.DB, err = gorm.Open("mysql", dataSourceName)
|
||||
i.DB, err = gorm.Open(mysql.Open(dataSourceName), &gorm.Config{PrepareStmt: false,
|
||||
Logger: logger.Default})
|
||||
if err != nil {
|
||||
mylog.Error(errors.Wrap(err, "Got error when connect database:"+dataSourceName))
|
||||
mylog.Error(myerrors.Wrap(err, "Got error when connect database:"+dataSourceName))
|
||||
return nil
|
||||
}
|
||||
i.IsInit = true
|
||||
}
|
||||
|
||||
i.DB.SingularTable(true) //全局禁用表名复数
|
||||
// i.DB.SingularTable(true) //全局禁用表名复数
|
||||
if dev.IsDev() {
|
||||
i.DB.LogMode(true)
|
||||
//beedb.OnDebug = true
|
||||
i.DB = i.DB.Debug()
|
||||
} else {
|
||||
i.DB.SetLogger(DbLog{})
|
||||
i.DB.Logger = GetDBlog()
|
||||
}
|
||||
|
||||
i.DB.Logger = GetDBlog()
|
||||
|
||||
return i.DB
|
||||
}
|
||||
|
||||
// OnDestoryDB destorydb
|
||||
func (i *MySqlDB) OnDestoryDB() {
|
||||
if i.DB != nil {
|
||||
i.DB.Close()
|
||||
sqldb, _ := i.DB.DB()
|
||||
sqldb.Close()
|
||||
i.DB = nil
|
||||
}
|
||||
}
|
||||
@@ -66,6 +70,11 @@ func (i *MySqlDB) IsNotFound(errs ...error) bool {
|
||||
return i.RecordNotFound()
|
||||
}
|
||||
|
||||
// RecordNotFound check if returning ErrRecordNotFound error
|
||||
func (i *MySqlDB) RecordNotFound() bool {
|
||||
return !errors.Is(i.Error, gorm.ErrRecordNotFound)
|
||||
}
|
||||
|
||||
// Commit 自动提交(如果有错,Rollback)
|
||||
func (i *MySqlDB) Commit(db *gorm.DB) {
|
||||
if db.Error != nil {
|
||||
|
37
mysqldbv1/log.go
Normal file
37
mysqldbv1/log.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package mysqldbv1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/xxjwxc/public/mylog"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
var LogFormatter = func(values ...interface{}) (messages []interface{}) {
|
||||
if len(values) > 1 {
|
||||
var (
|
||||
currentTime = "\t[" + gorm.NowFunc().Format("2006-01-02 15:04:05") + "]"
|
||||
source = fmt.Sprintf("(%v)\t", values[1])
|
||||
)
|
||||
messages = []interface{}{source, currentTime}
|
||||
messages = append(messages, "\t [")
|
||||
messages = append(messages, values[2:]...)
|
||||
messages = append(messages, "]")
|
||||
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
//
|
||||
type DbLog struct {
|
||||
gorm.Logger
|
||||
}
|
||||
|
||||
//
|
||||
func (db DbLog) Print(values ...interface{}) {
|
||||
msg := LogFormatter(values...)
|
||||
str := fmt.Sprint(msg...)
|
||||
mylog.SaveError(str, "sql")
|
||||
}
|
76
mysqldbv1/mysqldb.go
Normal file
76
mysqldbv1/mysqldb.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package mysqldbv1
|
||||
|
||||
import (
|
||||
"github.com/xxjwxc/public/dev"
|
||||
"github.com/xxjwxc/public/errors"
|
||||
|
||||
"github.com/xxjwxc/public/mylog"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// MySqlDB ...
|
||||
type MySqlDB struct {
|
||||
*gorm.DB
|
||||
IsInit bool
|
||||
}
|
||||
|
||||
// OnInitDBOrm init MySqlDB
|
||||
func OnInitDBOrm(dataSourceName string) (orm *MySqlDB) {
|
||||
orm = new(MySqlDB)
|
||||
orm.OnGetDBOrm(dataSourceName)
|
||||
return
|
||||
}
|
||||
|
||||
// OnGetDBOrm get gorm.db
|
||||
func (i *MySqlDB) OnGetDBOrm(dataSourceName string) *gorm.DB {
|
||||
if i.DB == nil {
|
||||
var err error
|
||||
i.DB, err = gorm.Open("mysql", dataSourceName)
|
||||
if err != nil {
|
||||
mylog.Error(errors.Wrap(err, "Got error when connect database:"+dataSourceName))
|
||||
return nil
|
||||
}
|
||||
i.IsInit = true
|
||||
}
|
||||
|
||||
i.DB.SingularTable(true) //全局禁用表名复数
|
||||
if dev.IsDev() {
|
||||
i.DB.LogMode(true)
|
||||
//beedb.OnDebug = true
|
||||
} else {
|
||||
i.DB.SetLogger(DbLog{})
|
||||
}
|
||||
|
||||
return i.DB
|
||||
}
|
||||
|
||||
// OnDestoryDB destorydb
|
||||
func (i *MySqlDB) OnDestoryDB() {
|
||||
if i.DB != nil {
|
||||
i.DB.Close()
|
||||
i.DB = nil
|
||||
}
|
||||
}
|
||||
|
||||
// IsNotFound 判断错误是否未找到
|
||||
func (i *MySqlDB) IsNotFound(errs ...error) bool {
|
||||
if len(errs) > 0 {
|
||||
for _, err := range errs {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return i.RecordNotFound()
|
||||
}
|
||||
|
||||
// Commit 自动提交(如果有错,Rollback)
|
||||
func (i *MySqlDB) Commit(db *gorm.DB) {
|
||||
if db.Error != nil {
|
||||
db.Rollback() // 回滚
|
||||
} else {
|
||||
db.Commit()
|
||||
}
|
||||
}
|
BIN
mysqldbv1/mysqldb2018-05-04.rar
Normal file
BIN
mysqldbv1/mysqldb2018-05-04.rar
Normal file
Binary file not shown.
Reference in New Issue
Block a user