Files
service-common/module/db.go

62 lines
1.2 KiB
Go

package module
import (
"git.hlsq.asia/mmorpg/service-common/config"
"git.hlsq.asia/mmorpg/service-common/db/etcd"
"git.hlsq.asia/mmorpg/service-common/db/kafka"
"git.hlsq.asia/mmorpg/service-common/db/mysql"
"git.hlsq.asia/mmorpg/service-common/db/redis"
"git.hlsq.asia/mmorpg/service-common/log"
)
// DB 数据库模块
type DB struct {
DefaultModule
Cfg *config.DBConfig
AppName string
}
func (m *DB) Init() error {
// ETCD
if m.Cfg.Etcd != nil {
if err := etcd.Init(m.Cfg.Etcd); err != nil {
return err
}
}
// MYSQL
if m.Cfg.MySQL != nil {
if err := mysql.Init(m.Cfg.MySQL); err != nil {
return err
}
}
// REDIS
if m.Cfg.Redis != nil {
if err := redis.Init(m.Cfg.Redis); err != nil {
return err
}
}
// KAFKA
if m.Cfg.Kafka != nil {
if err := kafka.Init(m.Cfg.Kafka, m.AppName); err != nil {
return err
}
}
return nil
}
func (m *DB) Stop() error {
if err := etcd.Close(); err != nil {
log.Errorf("close etcd failed: %v", err)
}
if err := mysql.Close(); err != nil {
log.Errorf("close mysql failed: %v", err)
}
if err := redis.Close(); err != nil {
log.Errorf("close redis failed: %v", err)
}
if err := kafka.Close(); err != nil {
log.Errorf("close kafka failed: %v", err)
}
return nil
}