Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

81 linhas
1.6 KiB

  1. package db
  2. import (
  3. "egg-im/config"
  4. "egg-im/pkg/logger"
  5. "egg-im/pkg/util"
  6. "fmt"
  7. "github.com/go-redis/redis"
  8. "github.com/jinzhu/gorm"
  9. _ "github.com/go-sql-driver/mysql"
  10. )
  11. var (
  12. DB *gorm.DB
  13. BusinessDB *gorm.DB
  14. RedisCli *redis.Client
  15. RedisUtil *util.RedisUtil
  16. )
  17. func Init() {
  18. InitMysql(config.MySQL)
  19. InitBusinessMysql(config.BusinessMySQL)
  20. InitRedis(config.RedisIP, config.RedisPassword)
  21. }
  22. // InitMysql 初始化MySQL
  23. func InitMysql(dataSource string) {
  24. logger.Logger.Info("init mysql")
  25. var err error
  26. DB, err = gorm.Open("mysql", dataSource)
  27. if err != nil {
  28. panic(err)
  29. }
  30. DB.SingularTable(true)
  31. DB.LogMode(true)
  32. logger.Logger.Info("init mysql ok")
  33. }
  34. // InitBusinessMysql 初始化MySQL
  35. func InitBusinessMysql(dataSource string) {
  36. logger.Logger.Info("init mysql")
  37. var err error
  38. BusinessDB, err = gorm.Open("mysql", dataSource)
  39. if err != nil {
  40. panic(err)
  41. }
  42. BusinessDB.SingularTable(true)
  43. BusinessDB.LogMode(true)
  44. logger.Logger.Info("init business mysql ok")
  45. }
  46. // InitRedis 初始化Redis
  47. func InitRedis(addr, password string) {
  48. logger.Logger.Info("init redis")
  49. RedisCli = redis.NewClient(&redis.Options{
  50. Addr: addr,
  51. DB: 1, //TODO::IM统一放1号库
  52. Password: password,
  53. })
  54. _, err := RedisCli.Ping().Result()
  55. if err != nil {
  56. panic(err)
  57. }
  58. RedisUtil = util.NewRedisUtil(RedisCli)
  59. logger.Logger.Info("init redis ok")
  60. }
  61. // InitByTest 初始化数据库配置,仅用在单元测试
  62. func InitByTest() {
  63. fmt.Println("init db")
  64. logger.Target = logger.Console
  65. InitMysql(config.MySQL)
  66. InitBusinessMysql(config.BusinessMySQL)
  67. InitRedis(config.RedisIP, config.RedisPassword)
  68. }