代码拉取完成,页面将自动刷新
package models
import (
"gitee.com/nuokwan_backend_group/mvc/Base"
"gitee.com/nuokwan_backend_group/mvc/starters"
"github.com/jinzhu/gorm"
)
type ModelWrapper struct {
Db *gorm.DB
ConnectorName string
Conn string
Connector starters.IDataBaseConnector
}
var NotExists = Base.LogicError("记录不存在")
func (wrapper *ModelWrapper) Connection(name ...string) starters.IDataBaseConnector {
var (
err error
ok bool
any interface{}
connection string
driver string
connector starters.IDataBaseConnector
)
if wrapper.ConnectorName == "" {
wrapper.ConnectorName = starters.MysqlConnectorId
}
if len(name) > 0 {
driver = Base.DriverName("db", name[0])
} else {
driver = Base.DriverName("db", "default")
}
if wrapper.ConnectorName != "" && wrapper.Connector != nil {
connector = wrapper.Connector
} else {
any = Base.Container(wrapper.ConnectorName)
if any == nil {
panic(Base.RuntimeError(wrapper.ConnectorName + " not register"))
}
connector, ok = any.(starters.IDataBaseConnector)
if !ok {
panic(Base.RuntimeError("db 服务注册的connector类型不匹配 connection:" + connection))
}
}
if connection, err = Base.Config().Get(driver); err != nil {
panic(Base.RuntimeError("db driver 配置不存在:" + driver))
}
if connector != nil {
wrapper.Connector = connector
}
// 返回链接器
if connection == wrapper.Conn && wrapper.Db != nil {
return connector
}
// 链接
if wrapper.Db == nil {
wrapper.Db = wrapper.Connector.Connection(connection)
wrapper.Conn = connection
}
return connector
}
func (wrapper *ModelWrapper) GetOrm() *gorm.DB {
if wrapper.Db == nil {
wrapper.Connection()
}
return wrapper.Db
}
func (wrapper *ModelWrapper) SetOrm(orm *gorm.DB) *ModelWrapper {
wrapper.Close()
wrapper.Db = orm
return wrapper
}
func (wrapper *ModelWrapper) Close() {
if wrapper.Db != nil {
_ = wrapper.Db.Close()
wrapper.Db = nil
}
}
func (wrapper *ModelWrapper) Destroy() {
wrapper.Close()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。