db_mysql.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package config
  2. import (
  3. "gorm.io/gorm/logger"
  4. "strings"
  5. )
  6. type Mysql struct {
  7. GeneralDB `yaml:",inline" mapstructure:",squash"`
  8. }
  9. func (m *Mysql) Dsn() string {
  10. return m.Username + ":" + m.Password + "@tcp(" + m.Path + ":" + m.Port + ")/" + m.Dbname + "?" + m.Config
  11. }
  12. type DsnProvider interface {
  13. Dsn() string
  14. }
  15. // GeneralDB 也被 Pgsql 和 Mysql 原样使用
  16. type GeneralDB struct {
  17. Prefix string `mapstructure:"prefix" json:"prefix" yaml:"prefix"`
  18. Port string `mapstructure:"port" json:"port" yaml:"port"` // 数据库端口
  19. Config string `mapstructure:"config" json:"config" yaml:"config"` // 高级配置
  20. Dbname string `mapstructure:"db-name" json:"db-name" yaml:"db-name"` // 数据库名
  21. Username string `mapstructure:"username" json:"username" yaml:"username"` // 数据库账号
  22. Password string `mapstructure:"password" json:"password" yaml:"password"` // 数据库密码
  23. Path string `mapstructure:"path" json:"path" yaml:"path"` // 数据库地址
  24. Engine string `mapstructure:"engine" json:"engine" yaml:"engine" default:"InnoDB"` // 数据库引擎,默认InnoDB
  25. LogMode string `mapstructure:"log-mode" json:"log-mode" yaml:"log-mode"` // 是否开启Gorm全局日志
  26. MaxIdleConns int `mapstructure:"max-idle-conns" json:"max-idle-conns" yaml:"max-idle-conns"` // 空闲中的最大连接数
  27. MaxOpenConns int `mapstructure:"max-open-conns" json:"max-open-conns" yaml:"max-open-conns"` // 打开到数据库的最大连接数
  28. Singular bool `mapstructure:"singular" json:"singular" yaml:"singular"` // 是否开启全局禁用复数,true表示开启
  29. LogZap bool `mapstructure:"log-zap" json:"log-zap" yaml:"log-zap"` // 是否通过zap写入日志文件
  30. }
  31. func (c GeneralDB) LogLevel() logger.LogLevel {
  32. switch strings.ToLower(c.LogMode) {
  33. case "silent", "Silent":
  34. return logger.Silent
  35. case "error", "Error":
  36. return logger.Error
  37. case "warn", "Warn":
  38. return logger.Warn
  39. case "info", "Info":
  40. return logger.Info
  41. default:
  42. return logger.Info
  43. }
  44. }