zhangqian
2023-08-26 5193dcb9336e853502baf8a539d3f45efebe2f86
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package internal
 
import (
    "gorm.io/gorm/schema"
    "log"
    "os"
    "time"
 
    "gorm.io/gorm"
    "gorm.io/gorm/logger"
    "srm/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
}