refactor new engine
This commit is contained in:
parent
51d6afa330
commit
aed961a5a9
|
@ -31,7 +31,7 @@ type URI struct {
|
|||
|
||||
// Dialect represents a kind of database
|
||||
type Dialect interface {
|
||||
Init(*core.DB, *URI /*, string, string*/) error
|
||||
Init(*core.DB, *URI) error
|
||||
URI() *URI
|
||||
DB() *core.DB
|
||||
DBType() schemas.DBType
|
||||
|
|
|
@ -210,8 +210,8 @@ type mssql struct {
|
|||
Base
|
||||
}
|
||||
|
||||
func (db *mssql) Init(d *core.DB, uri *URI /*, drivername, dataSourceName string*/) error {
|
||||
return db.Base.Init(d, db, uri /*, drivername, dataSourceName*/)
|
||||
func (db *mssql) Init(d *core.DB, uri *URI) error {
|
||||
return db.Base.Init(d, db, uri)
|
||||
}
|
||||
|
||||
func (db *mssql) SQLType(c *schemas.Column) string {
|
||||
|
|
|
@ -177,8 +177,8 @@ type mysql struct {
|
|||
rowFormat string
|
||||
}
|
||||
|
||||
func (db *mysql) Init(d *core.DB, uri *URI /*, drivername, dataSourceName string*/) error {
|
||||
return db.Base.Init(d, db, uri /*, drivername, dataSourceName*/)
|
||||
func (db *mysql) Init(d *core.DB, uri *URI) error {
|
||||
return db.Base.Init(d, db, uri)
|
||||
}
|
||||
|
||||
func (db *mysql) SetParams(params map[string]string) {
|
||||
|
|
|
@ -504,8 +504,8 @@ type oracle struct {
|
|||
Base
|
||||
}
|
||||
|
||||
func (db *oracle) Init(d *core.DB, uri *URI /*, drivername, dataSourceName string*/) error {
|
||||
return db.Base.Init(d, db, uri /*, drivername, dataSourceName*/)
|
||||
func (db *oracle) Init(d *core.DB, uri *URI) error {
|
||||
return db.Base.Init(d, db, uri)
|
||||
}
|
||||
|
||||
func (db *oracle) SQLType(c *schemas.Column) string {
|
||||
|
|
|
@ -774,8 +774,8 @@ type postgres struct {
|
|||
Base
|
||||
}
|
||||
|
||||
func (db *postgres) Init(d *core.DB, uri *URI /*, drivername, dataSourceName string*/) error {
|
||||
err := db.Base.Init(d, db, uri /*, drivername, dataSourceName*/)
|
||||
func (db *postgres) Init(d *core.DB, uri *URI) error {
|
||||
err := db.Base.Init(d, db, uri)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -149,8 +149,8 @@ type sqlite3 struct {
|
|||
Base
|
||||
}
|
||||
|
||||
func (db *sqlite3) Init(d *core.DB, uri *URI /*, drivername, dataSourceName string*/) error {
|
||||
return db.Base.Init(d, db, uri /*, drivername, dataSourceName*/)
|
||||
func (db *sqlite3) Init(d *core.DB, uri *URI) error {
|
||||
return db.Base.Init(d, db, uri)
|
||||
}
|
||||
|
||||
func (db *sqlite3) SQLType(c *schemas.Column) string {
|
||||
|
|
14
engine.go
14
engine.go
|
@ -64,7 +64,7 @@ func (engine *Engine) BufferSize(size int) *Session {
|
|||
// ShowSQL show SQL statement or not on logger if log level is great than INFO
|
||||
func (engine *Engine) ShowSQL(show ...bool) {
|
||||
engine.logger.ShowSQL(show...)
|
||||
engine.db.Logger = engine.logger
|
||||
engine.DB().Logger = engine.logger
|
||||
}
|
||||
|
||||
// Logger return the logger interface
|
||||
|
@ -82,7 +82,7 @@ func (engine *Engine) SetLogger(logger interface{}) {
|
|||
realLogger = t
|
||||
}
|
||||
engine.logger = realLogger
|
||||
engine.db.Logger = realLogger
|
||||
engine.DB().Logger = realLogger
|
||||
}
|
||||
|
||||
// SetLogLevel sets the logger level
|
||||
|
@ -167,17 +167,17 @@ func (engine *Engine) AutoIncrStr() string {
|
|||
|
||||
// SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
|
||||
func (engine *Engine) SetConnMaxLifetime(d time.Duration) {
|
||||
engine.db.SetConnMaxLifetime(d)
|
||||
engine.DB().SetConnMaxLifetime(d)
|
||||
}
|
||||
|
||||
// SetMaxOpenConns is only available for go 1.2+
|
||||
func (engine *Engine) SetMaxOpenConns(conns int) {
|
||||
engine.db.SetMaxOpenConns(conns)
|
||||
engine.DB().SetMaxOpenConns(conns)
|
||||
}
|
||||
|
||||
// SetMaxIdleConns set the max idle connections on pool, default is 2
|
||||
func (engine *Engine) SetMaxIdleConns(conns int) {
|
||||
engine.db.SetMaxIdleConns(conns)
|
||||
engine.DB().SetMaxIdleConns(conns)
|
||||
}
|
||||
|
||||
// SetDefaultCacher set the default cacher. Xorm's default not enable cacher.
|
||||
|
@ -218,7 +218,7 @@ func (engine *Engine) NewDB() (*core.DB, error) {
|
|||
|
||||
// DB return the wrapper of sql.DB
|
||||
func (engine *Engine) DB() *core.DB {
|
||||
return engine.db
|
||||
return engine.dialect.DB()
|
||||
}
|
||||
|
||||
// Dialect return database dialect
|
||||
|
@ -235,7 +235,7 @@ func (engine *Engine) NewSession() *Session {
|
|||
|
||||
// Close the engine
|
||||
func (engine *Engine) Close() error {
|
||||
return engine.db.Close()
|
||||
return engine.DB().Close()
|
||||
}
|
||||
|
||||
// Ping tests if database is alive
|
||||
|
|
|
@ -284,7 +284,7 @@ func (session *Session) Having(conditions string) *Session {
|
|||
// DB db return the wrapper of sql.DB
|
||||
func (session *Session) DB() *core.DB {
|
||||
if session.db == nil {
|
||||
session.db = session.engine.db
|
||||
session.db = session.engine.DB()
|
||||
session.stmtCache = make(map[uint32]*core.Stmt, 0)
|
||||
}
|
||||
return session.db
|
||||
|
|
|
@ -34,7 +34,7 @@ func (session *Session) Rollback() error {
|
|||
session.isAutoCommit = true
|
||||
|
||||
start := time.Now()
|
||||
needSQL := session.engine.db.NeedLogSQL(session.ctx)
|
||||
needSQL := session.DB().NeedLogSQL(session.ctx)
|
||||
if needSQL {
|
||||
session.engine.logger.BeforeSQL(log.LogContext{
|
||||
Ctx: session.ctx,
|
||||
|
@ -63,7 +63,7 @@ func (session *Session) Commit() error {
|
|||
session.isAutoCommit = true
|
||||
|
||||
start := time.Now()
|
||||
needSQL := session.engine.db.NeedLogSQL(session.ctx)
|
||||
needSQL := session.DB().NeedLogSQL(session.ctx)
|
||||
if needSQL {
|
||||
session.engine.logger.BeforeSQL(log.LogContext{
|
||||
Ctx: session.ctx,
|
||||
|
|
27
xorm.go
27
xorm.go
|
@ -8,13 +8,11 @@ package xorm
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"xorm.io/xorm/caches"
|
||||
"xorm.io/xorm/core"
|
||||
"xorm.io/xorm/dialects"
|
||||
"xorm.io/xorm/log"
|
||||
"xorm.io/xorm/names"
|
||||
|
@ -34,27 +32,7 @@ func close(engine *Engine) {
|
|||
// NewEngine new a db manager according to the parameter. Currently support four
|
||||
// drivers
|
||||
func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
|
||||
driver := dialects.QueryDriver(driverName)
|
||||
if driver == nil {
|
||||
return nil, fmt.Errorf("Unsupported driver name: %v", driverName)
|
||||
}
|
||||
|
||||
uri, err := driver.Parse(driverName, dataSourceName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dialect := dialects.QueryDialect(uri.DBType)
|
||||
if dialect == nil {
|
||||
return nil, fmt.Errorf("Unsupported dialect type: %v", uri.DBType)
|
||||
}
|
||||
|
||||
db, err := core.Open(driverName, dataSourceName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = dialect.Init(db, uri /*, driverName, dataSourceName*/)
|
||||
dialect, err := dialects.OpenDialect(driverName, dataSourceName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -64,7 +42,6 @@ func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
|
|||
tagParser := tags.NewParser("xorm", dialect, mapper, mapper, cacherMgr)
|
||||
|
||||
engine := &Engine{
|
||||
db: db,
|
||||
dialect: dialect,
|
||||
TZLocation: time.Local,
|
||||
defaultContext: context.Background(),
|
||||
|
@ -74,7 +51,7 @@ func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
|
|||
dataSourceName: dataSourceName,
|
||||
}
|
||||
|
||||
if uri.DBType == schemas.SQLITE {
|
||||
if dialect.URI().DBType == schemas.SQLITE {
|
||||
engine.DatabaseTZ = time.UTC
|
||||
} else {
|
||||
engine.DatabaseTZ = time.Local
|
||||
|
|
Loading…
Reference in New Issue