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 }