gorm.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package internal
  2. import (
  3. "github.com/flipped-aurora/gin-vue-admin/server/config"
  4. "github.com/flipped-aurora/gin-vue-admin/server/global"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/logger"
  7. "gorm.io/gorm/schema"
  8. "time"
  9. )
  10. var Gorm = new(_gorm)
  11. type _gorm struct{}
  12. // Config gorm 自定义配置
  13. // Author [SliverHorn](https://github.com/SliverHorn)
  14. func (g *_gorm) Config(prefix string, singular bool) *gorm.Config {
  15. var general config.GeneralDB
  16. switch global.GVA_CONFIG.System.DbType {
  17. case "mysql":
  18. general = global.GVA_CONFIG.Mysql.GeneralDB
  19. case "pgsql":
  20. general = global.GVA_CONFIG.Pgsql.GeneralDB
  21. case "oracle":
  22. general = global.GVA_CONFIG.Oracle.GeneralDB
  23. case "sqlite":
  24. general = global.GVA_CONFIG.Sqlite.GeneralDB
  25. case "mssql":
  26. general = global.GVA_CONFIG.Mssql.GeneralDB
  27. default:
  28. general = global.GVA_CONFIG.Mysql.GeneralDB
  29. }
  30. return &gorm.Config{
  31. Logger: logger.New(NewWriter(general), logger.Config{
  32. SlowThreshold: 200 * time.Millisecond,
  33. LogLevel: general.LogLevel(),
  34. Colorful: true,
  35. }),
  36. NamingStrategy: schema.NamingStrategy{
  37. TablePrefix: prefix,
  38. SingularTable: singular,
  39. },
  40. DisableForeignKeyConstraintWhenMigrating: true,
  41. }
  42. }