component.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package mdb
  2. import (
  3. "github.com/go-redis/redis/v8"
  4. mhayaGORM "github.com/mhaya/components/gorm"
  5. mhayaMongo "github.com/mhaya/components/mongo"
  6. "github.com/mhaya/game/game_cluster/internal/mdb/eventmodels"
  7. clog "github.com/mhaya/logger"
  8. cactor "github.com/mhaya/net/actor"
  9. cprofile "github.com/mhaya/profile"
  10. "go.mongodb.org/mongo-driver/mongo"
  11. "gorm.io/gorm"
  12. )
  13. type ActorDB struct {
  14. cactor.Base
  15. }
  16. var (
  17. LogstashDB *gorm.DB
  18. MDB *mongo.Database
  19. RDB redis.UniversalClient
  20. )
  21. func (p *ActorDB) AliasID() string {
  22. return "db"
  23. }
  24. // OnInit Actor初始化前触发该函数
  25. func (p *ActorDB) OnInit() {
  26. if p.App().Find(mhayaMongo.Name) != nil {
  27. mongo := p.App().Find(mhayaMongo.Name).(*mhayaMongo.Component)
  28. if mongo == nil {
  29. clog.DPanicf("[component = %s] not found.", mhayaMongo.Name)
  30. }
  31. // 获取 db_id = "center_db_1" 的配置
  32. dbID := p.App().Settings().GetConfig("db_id_list").GetString("game_db_id")
  33. MDB = mongo.GetDb(dbID)
  34. if MDB == nil {
  35. clog.Panic("game_db_id not found, dbID:" + dbID)
  36. }
  37. }
  38. if p.App().Find(mhayaGORM.Name) != nil {
  39. gormComponent := p.App().Find(mhayaGORM.Name).(*mhayaGORM.Component)
  40. if gormComponent == nil {
  41. clog.DPanicf("[component = %s] not found.", mhayaGORM.Name)
  42. }
  43. // 获取 db_id = "center_db_1" 的配置
  44. dbID := p.App().Settings().GetConfig("db_id_list").GetString("logstash_db_id")
  45. LogstashDB = gormComponent.GetDb(dbID)
  46. if LogstashDB == nil {
  47. clog.Panic("logstash_db_id not found, dbID:" + dbID)
  48. }
  49. LogstashMigrateTables()
  50. }
  51. redisConfig := cprofile.GetConfig("redis")
  52. /* tlsConfig := &tls.Config{
  53. MinVersion: tls.VersionTLS12,
  54. PreferServerCipherSuites: true,
  55. }*/
  56. RDB = redis.NewUniversalClient(&redis.UniversalOptions{
  57. Addrs: []string{redisConfig.GetString("address")},
  58. Password: redisConfig.GetString("password"),
  59. DB: redisConfig.GetInt("db"),
  60. //TLSConfig: tlsConfig,
  61. })
  62. if p.App().NodeId() == "m-center" {
  63. SetIndex()
  64. }
  65. }
  66. func LogstashMigrateTables() {
  67. LogstashDB.AutoMigrate(&eventmodels.UserRegisterEventContent{})
  68. LogstashDB.AutoMigrate(&eventmodels.UserLoginEventContent{})
  69. LogstashDB.AutoMigrate(&eventmodels.UserUpdateInfoEventContent{})
  70. LogstashDB.AutoMigrate(&eventmodels.UserWithdrawEventContent{})
  71. LogstashDB.AutoMigrate(&eventmodels.AssetsEventContent{})
  72. LogstashDB.AutoMigrate(&eventmodels.InviteEventContent{})
  73. LogstashDB.AutoMigrate(&eventmodels.DiceEventContent{})
  74. LogstashDB.AutoMigrate(&eventmodels.TurntableEventContent{})
  75. LogstashDB.AutoMigrate(&eventmodels.JoinChannelEventContent{})
  76. LogstashDB.AutoMigrate(&eventmodels.FollowEventContent{})
  77. LogstashDB.AutoMigrate(&eventmodels.TaskFinishEventContent{})
  78. LogstashDB.AutoMigrate(&eventmodels.BackendOperationEventContent{})
  79. }