package db

import (
	"common/config"
	"common/db/etcd"
	"common/db/mysql"
	"common/db/redis"
	"common/log"
)

// ModuleDB 数据库模块
type ModuleDB struct {
}

func (p *ModuleDB) Init(cfg *config.DBConfig) error {
	// ETCD
	if cfg.Etcd != nil {
		if err := etcd.Init(cfg.Etcd); err != nil {
			return err
		}
	}
	// MYSQL
	if cfg.MySQL != nil {
		if err := mysql.Init(cfg.MySQL); err != nil {
			return err
		}
	}
	// REDIS
	if cfg.Redis != nil {
		if err := redis.Init(cfg.Redis); err != nil {
			return err
		}
	}
	return nil
}

func (p *ModuleDB) 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
}
