package db
|
|
import (
|
"github.com/elastic/go-elasticsearch/v6"
|
"gorm.io/gorm"
|
"model-engine/config"
|
"model-engine/db/es"
|
"model-engine/pkg/logger"
|
"model-engine/pkg/mysqlx"
|
)
|
|
// Init 初始化mysql和es
|
func Init() error {
|
if err := mysqlx.Init(config.MysqlConf, logger.GetLogger()); err != nil {
|
return err
|
}
|
if err := es.InitClient([]string{"http://" + config.EsInfo.Ip + ":" + config.EsInfo.Port}); err != nil {
|
return err
|
}
|
return nil
|
}
|
|
// GetDB ...
|
func GetDB() *gorm.DB {
|
return mysqlx.GetDB()
|
}
|
|
func GetEsClient() *elasticsearch.Client {
|
return es.EsClient
|
}
|
|
func WithTransaction(fn func(*gorm.DB) error) error {
|
var err error
|
tx := mysqlx.GetDB().Begin()
|
defer func() {
|
if r := recover(); r != nil {
|
tx.Rollback()
|
return
|
} else if err == nil {
|
tx.Commit()
|
return
|
}
|
}()
|
|
err = fn(tx)
|
if err != nil {
|
tx.Rollback()
|
return err
|
}
|
|
return nil
|
}
|