| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package multi_db
- import (
- "errors"
- "fmt"
- "sync"
- "git.shuncheng.lu/bigthing/gocommon/pkg/conf"
- "git.shuncheng.lu/bigthing/gocommon/pkg/database/common_db"
- "git.shuncheng.lu/bigthing/gocommon/pkg/internal/util"
- )
- var (
- notFoundError = func(dbName string) error {
- return errors.New(fmt.Sprintf("MultiDb not fount %s db", dbName))
- }
- lock sync.RWMutex
- multiMap map[string]common_db.DbConn = map[string]common_db.DbConn{}
- )
- func Init() error {
- dbNameStr := conf.GetString("multi_db", "db_name")
- dbNames := util.SplitIgnoreSpace(dbNameStr, ",")
- for _, elem := range dbNames {
- conn, err := common_db.NewDbConn(elem)
- if err != nil {
- return err
- }
- setDb(elem, conn)
- util.Infof("[MultiDB] init db %s success !", elem)
- }
- return nil
- }
- func setDb(dbName string, conn common_db.DbConn) {
- lock.Lock()
- defer lock.Unlock()
- multiMap[dbName] = conn
- }
- func GetDb(dbName string) (common_db.DbConn, error) {
- lock.RLock()
- defer lock.RUnlock()
- db, isExist := multiMap[dbName]
- if isExist {
- return db, nil
- }
- return nil, notFoundError(dbName)
- }
|