admin / modules /db /base.go
AZLABS's picture
Upload folder using huggingface_hub
530729e verified
package db
import (
"database/sql"
"errors"
"sync"
"github.com/GoAdminGroup/go-admin/modules/config"
"xorm.io/xorm"
)
// Base is a common Connection.
type Base struct {
DbList map[string]*sql.DB
Once sync.Once
Configs config.DatabaseList
}
// Close implements the method Connection.Close.
func (db *Base) Close() []error {
errs := make([]error, 0)
for _, d := range db.DbList {
errs = append(errs, d.Close())
}
return errs
}
// GetDB implements the method Connection.GetDB.
func (db *Base) GetDB(key string) *sql.DB {
return db.DbList[key]
}
func (db *Base) CreateDB(name string, beans ...interface{}) error {
cfg := db.GetConfig(name)
if cfg.Driver == "" {
return errors.New("wrong connection name")
}
engine, err := xorm.NewEngine(cfg.Driver, cfg.GetDSN())
if err != nil {
return err
}
defer func() {
_ = engine.Close()
}()
err = engine.Sync(beans...)
if err != nil {
return err
}
return nil
}
func (db *Base) GetConfig(name string) config.Database {
return db.Configs[name]
}