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/mysql" "git.hlsq.asia/mmorpg/service-common/db/redis" "git.hlsq.asia/mmorpg/service-common/log" ) // DB 数据库模块 type DB struct { DefaultModule cfg *config.DBConfig } 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 } } 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) } return nil } func (m *DB) Bind(data ...any) Module { if data == nil || len(data) == 0 { return m } if cfg, ok := data[0].(*config.DBConfig); ok { m.cfg = cfg } return m }