63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
|
package internal
|
||
|
|
||
|
import (
|
||
|
"gorm.io/gorm/schema"
|
||
|
"log"
|
||
|
"os"
|
||
|
"time"
|
||
|
|
||
|
"gorm.io/gorm"
|
||
|
"gorm.io/gorm/logger"
|
||
|
"miniapp/global"
|
||
|
)
|
||
|
|
||
|
type DBBASE interface {
|
||
|
GetLogMode() string
|
||
|
}
|
||
|
|
||
|
var Gorm = new(_gorm)
|
||
|
|
||
|
type _gorm struct{}
|
||
|
|
||
|
// Config gorm 自定义配置
|
||
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
||
|
func (g *_gorm) Config(prefix string, singular bool) *gorm.Config {
|
||
|
config := &gorm.Config{
|
||
|
NamingStrategy: schema.NamingStrategy{
|
||
|
TablePrefix: prefix,
|
||
|
SingularTable: singular,
|
||
|
},
|
||
|
DisableForeignKeyConstraintWhenMigrating: true,
|
||
|
}
|
||
|
_default := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
|
||
|
SlowThreshold: 200 * time.Millisecond,
|
||
|
LogLevel: logger.Warn,
|
||
|
Colorful: true,
|
||
|
})
|
||
|
var logMode DBBASE
|
||
|
switch global.GVA_CONFIG.System.DbType {
|
||
|
case "mysql":
|
||
|
logMode = &global.GVA_CONFIG.Mysql
|
||
|
case "pgsql":
|
||
|
logMode = &global.GVA_CONFIG.Pgsql
|
||
|
case "oracle":
|
||
|
logMode = &global.GVA_CONFIG.Oracle
|
||
|
default:
|
||
|
logMode = &global.GVA_CONFIG.Mysql
|
||
|
}
|
||
|
|
||
|
switch logMode.GetLogMode() {
|
||
|
case "silent", "Silent":
|
||
|
config.Logger = _default.LogMode(logger.Silent)
|
||
|
case "error", "Error":
|
||
|
config.Logger = _default.LogMode(logger.Error)
|
||
|
case "warn", "Warn":
|
||
|
config.Logger = _default.LogMode(logger.Warn)
|
||
|
case "info", "Info":
|
||
|
config.Logger = _default.LogMode(logger.Info)
|
||
|
default:
|
||
|
config.Logger = _default.LogMode(logger.Info)
|
||
|
}
|
||
|
return config
|
||
|
}
|