rw_store.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package kptstore
  2. import (
  3. "kpt-tmr-group/config"
  4. "kpt-tmr-group/pkg/logger/logrus"
  5. "kpt-tmr-group/pkg/logger/zaplog"
  6. "kpt-tmr-group/pkg/xerr"
  7. "time"
  8. "go.uber.org/zap"
  9. "gorm.io/driver/mysql"
  10. "gorm.io/gorm"
  11. "gorm.io/gorm/logger"
  12. "kpt-tmr-group/pkg/di"
  13. )
  14. var Module = di.Options(
  15. di.Provide(MustNewStore),
  16. )
  17. type DB struct {
  18. *gorm.DB
  19. }
  20. func NewStore(engine *gorm.DB) *DB {
  21. return &DB{engine}
  22. }
  23. type goRmLog struct {
  24. }
  25. func (g goRmLog) Printf(s string, i ...interface{}) {
  26. logrus.Infof(s, i...)
  27. }
  28. func MustNewStore(cfg *config.AppConfig) *DB {
  29. newLogger := logger.New(
  30. goRmLog{},
  31. logger.Config{
  32. SlowThreshold: 5 * time.Second,
  33. LogLevel: logger.Info,
  34. },
  35. )
  36. db, err := gorm.Open(mysql.New(mysql.Config{
  37. DriverName: cfg.StoreSetting.DriverName,
  38. DSN: cfg.StoreSetting.KptEventDSNRW}),
  39. &gorm.Config{Logger: newLogger},
  40. )
  41. if err != nil {
  42. zaplog.Error("MustNewStore", zap.String("Err", err.Error()), zap.Any("KptEventDSNRW", cfg.StoreSetting.KptEventDSNRW))
  43. panic(xerr.WithStack(err))
  44. }
  45. if cfg.StoreSetting.ShowSQL {
  46. db.Logger.LogMode(logger.Info)
  47. }
  48. return NewStore(db)
  49. }