gorm.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package internal
  2. import (
  3. "gorm.io/gorm/schema"
  4. "log"
  5. "os"
  6. "time"
  7. "gorm.io/gorm"
  8. "gorm.io/gorm/logger"
  9. "server/global"
  10. )
  11. type DBBASE interface {
  12. GetLogMode() string
  13. }
  14. var Gorm = new(_gorm)
  15. type _gorm struct{}
  16. // Config gorm 自定义配置
  17. // Author [SliverHorn](https://github.com/SliverHorn)
  18. func (g *_gorm) Config(prefix string, singular bool) *gorm.Config {
  19. config := &gorm.Config{
  20. NamingStrategy: schema.NamingStrategy{
  21. TablePrefix: prefix,
  22. SingularTable: singular,
  23. },
  24. DisableForeignKeyConstraintWhenMigrating: true,
  25. }
  26. _default := logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
  27. SlowThreshold: 200 * time.Millisecond,
  28. LogLevel: logger.Warn,
  29. Colorful: true,
  30. })
  31. var logMode DBBASE
  32. switch global.GVA_CONFIG.System.DbType {
  33. case "mysql":
  34. logMode = &global.GVA_CONFIG.Mysql
  35. case "pgsql":
  36. logMode = &global.GVA_CONFIG.Pgsql
  37. case "oracle":
  38. logMode = &global.GVA_CONFIG.Oracle
  39. default:
  40. logMode = &global.GVA_CONFIG.Mysql
  41. }
  42. switch logMode.GetLogMode() {
  43. case "silent", "Silent":
  44. config.Logger = _default.LogMode(logger.Silent)
  45. case "error", "Error":
  46. config.Logger = _default.LogMode(logger.Error)
  47. case "warn", "Warn":
  48. config.Logger = _default.LogMode(logger.Warn)
  49. case "info", "Info":
  50. config.Logger = _default.LogMode(logger.Info)
  51. default:
  52. config.Logger = _default.LogMode(logger.Info)
  53. }
  54. return config
  55. }