rw_store.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package kptstore
  2. import (
  3. "kpt-temporary-mqtt/config"
  4. "time"
  5. "gitee.com/xuyiping_admin/pkg/logger/logrus"
  6. "gitee.com/xuyiping_admin/pkg/xerr"
  7. "gorm.io/driver/mysql"
  8. "gorm.io/gorm"
  9. "gorm.io/gorm/logger"
  10. "gitee.com/xuyiping_admin/pkg/di"
  11. )
  12. var Module = di.Options(
  13. di.Provide(MustNewStore),
  14. )
  15. type DB struct {
  16. *gorm.DB
  17. }
  18. func NewStore(engine *gorm.DB) *DB {
  19. return &DB{engine}
  20. }
  21. type goRmLog struct {
  22. }
  23. func (g goRmLog) Printf(s string, i ...interface{}) {
  24. logrus.Infof(s, i...)
  25. }
  26. var newLogger = logger.New(
  27. goRmLog{},
  28. logger.Config{
  29. SlowThreshold: 5 * time.Second,
  30. LogLevel: logger.Info,
  31. },
  32. )
  33. func MustNewStore(cfg *config.AppConfig) *DB {
  34. db, err := gorm.Open(mysql.New(mysql.Config{
  35. DriverName: cfg.StoreSetting.DriverName,
  36. DSN: cfg.StoreSetting.KptRW}),
  37. &gorm.Config{Logger: newLogger},
  38. )
  39. if err != nil {
  40. panic(xerr.WithStack(err))
  41. }
  42. if cfg.StoreSetting.ShowSQL {
  43. db.Logger.LogMode(logger.Info)
  44. }
  45. return NewStore(db)
  46. }
  47. func MustMigrateStore(cfg *config.AppConfig) *gorm.DB {
  48. db, err := gorm.Open(mysql.New(mysql.Config{
  49. DriverName: cfg.StoreSetting.DriverName,
  50. DSN: cfg.StoreSetting.KptMigr}),
  51. &gorm.Config{Logger: newLogger},
  52. )
  53. if err != nil {
  54. panic(xerr.WithStack(err))
  55. }
  56. if cfg.StoreSetting.ShowSQL {
  57. db.Logger.LogMode(logger.Info)
  58. }
  59. return db
  60. }