init
This commit is contained in:
88
myGorm/gorm.go
Normal file
88
myGorm/gorm.go
Normal file
@ -0,0 +1,88 @@
|
||||
package myGorm
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type SimpleORM struct {
|
||||
user string
|
||||
password string
|
||||
host string
|
||||
name string
|
||||
charset string
|
||||
runMode string
|
||||
loggerConfig logger.Config
|
||||
loggerLevel string
|
||||
}
|
||||
|
||||
func NewSimpleORM(user string, password string, host string, name string, charset string, runMode string) *SimpleORM {
|
||||
orm := &SimpleORM{
|
||||
user: user,
|
||||
password: password,
|
||||
host: host,
|
||||
name: name,
|
||||
charset: charset,
|
||||
runMode: runMode,
|
||||
loggerConfig: logger.Config{
|
||||
SlowThreshold: time.Second, // 慢 SQL 阈值
|
||||
Colorful: false, // 禁用彩色打印
|
||||
LogLevel: logger.Info,
|
||||
},
|
||||
}
|
||||
if runMode == "release" {
|
||||
orm.loggerConfig.LogLevel = logger.Silent
|
||||
}
|
||||
|
||||
return orm
|
||||
}
|
||||
|
||||
func (t *SimpleORM) getDSN() string {
|
||||
if t.charset == "" {
|
||||
t.charset = "utf8mb4"
|
||||
}
|
||||
return fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=%s&parseTime=True&loc=Local",
|
||||
t.user,
|
||||
t.password,
|
||||
t.host,
|
||||
t.name,
|
||||
t.charset,
|
||||
)
|
||||
}
|
||||
|
||||
func (t *SimpleORM) SetLoggerConfig(l logger.Config) {
|
||||
t.loggerConfig = l
|
||||
}
|
||||
|
||||
func (t *SimpleORM) SetLoggerLevel(level string) {
|
||||
if strings.ToLower(level) == "silent" {
|
||||
t.loggerConfig.LogLevel = logger.Silent
|
||||
} else if strings.ToLower(level) == "error" {
|
||||
t.loggerConfig.LogLevel = logger.Error
|
||||
} else if strings.ToLower(level) == "warn" {
|
||||
t.loggerConfig.LogLevel = logger.Warn
|
||||
} else if strings.ToLower(level) == "info" {
|
||||
t.loggerConfig.LogLevel = logger.Info
|
||||
}
|
||||
}
|
||||
|
||||
func (t *SimpleORM) ConnectMysql() *gorm.DB {
|
||||
Db, err := gorm.Open(
|
||||
mysql.Open(t.getDSN()), &gorm.Config{
|
||||
Logger: logger.New(
|
||||
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
|
||||
t.loggerConfig,
|
||||
),
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
panic("failed to connect database")
|
||||
}
|
||||
return Db
|
||||
}
|
Reference in New Issue
Block a user