rw_store.go 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package kptstore
  2. import (
  3. "kpt-event/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. func MustNewStore(cfg *config.AppConfig) *DB {
  27. newLogger := logger.New(
  28. goRmLog{},
  29. logger.Config{
  30. SlowThreshold: 5 * time.Second,
  31. LogLevel: logger.Info,
  32. },
  33. )
  34. db, err := gorm.Open(mysql.New(mysql.Config{
  35. DriverName: cfg.StoreSetting.DriverName,
  36. DSN: cfg.StoreSetting.KptEventDSNRW}),
  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. }