dao.go 1004 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package dao
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/go-nunu/nunu-layout-advanced/pkg/log"
  6. "github.com/spf13/viper"
  7. "gorm.io/driver/mysql"
  8. "gorm.io/gorm"
  9. "time"
  10. )
  11. type Dao struct {
  12. db *gorm.DB
  13. rdb *redis.Client
  14. logger *log.Logger
  15. }
  16. func NewDao(db *gorm.DB, rdb *redis.Client, logger *log.Logger) *Dao {
  17. return &Dao{
  18. db: db,
  19. rdb: rdb,
  20. logger: logger,
  21. }
  22. }
  23. func NewDB(conf *viper.Viper) *gorm.DB {
  24. db, err := gorm.Open(mysql.Open(conf.GetString("data.mysql.user")), &gorm.Config{})
  25. if err != nil {
  26. panic(err)
  27. }
  28. return db
  29. }
  30. func NewRedis(conf *viper.Viper) *redis.Client {
  31. rdb := redis.NewClient(&redis.Options{
  32. Addr: conf.GetString("data.redis.addr"),
  33. Password: conf.GetString("data.redis.password"),
  34. DB: conf.GetInt("data.redis.db"),
  35. })
  36. ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
  37. defer cancel()
  38. _, err := rdb.Ping(ctx).Result()
  39. if err != nil {
  40. panic(fmt.Sprintf("redis error: %s", err.Error()))
  41. }
  42. return rdb
  43. }