From af9edecff13a66b993d59da1e4af04d8448e9713 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 27 Oct 2023 16:27:33 +0000 Subject: [PATCH] Move core internal (#2354) Reviewed-on: https://gitea.com/xorm/xorm/pulls/2354 --- Makefile | 4 ++-- dialects/dameng.go | 2 +- dialects/dialect.go | 2 +- dialects/driver.go | 2 +- dialects/mssql.go | 2 +- dialects/mysql.go | 2 +- dialects/oracle.go | 2 +- dialects/postgres.go | 2 +- dialects/sqlite3.go | 2 +- engine.go | 28 +++++++++------------------- engine_group.go | 8 ++++---- engine_group_policy.go | 22 +++++++++++----------- {core => internal/core}/db.go | 0 {core => internal/core}/db_test.go | 0 {core => internal/core}/error.go | 0 {core => internal/core}/interface.go | 0 {core => internal/core}/rows.go | 0 {core => internal/core}/scan.go | 0 {core => internal/core}/stmt.go | 0 {core => internal/core}/tx.go | 0 rows.go | 2 +- scan.go | 2 +- session.go | 9 ++------- session_get.go | 2 +- session_raw.go | 10 +++++----- session_schema.go | 2 +- session_tx.go | 2 +- 27 files changed, 46 insertions(+), 61 deletions(-) rename {core => internal/core}/db.go (100%) rename {core => internal/core}/db_test.go (100%) rename {core => internal/core}/error.go (100%) rename {core => internal/core}/interface.go (100%) rename {core => internal/core}/rows.go (100%) rename {core => internal/core}/scan.go (100%) rename {core => internal/core}/stmt.go (100%) rename {core => internal/core}/tx.go (100%) diff --git a/Makefile b/Makefile index 07ecea64..4cf77258 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ GOFMT ?= gofmt -s TAGS ?= SED_INPLACE := sed -i -GO_DIRS := contexts integrations core dialects internal log migrate names schemas tags +GO_DIRS := contexts tests core dialects internal log migrate names schemas tags GOFILES := $(wildcard *.go) GOFILES += $(shell find $(GO_DIRS) -name "*.go" -type f) INTEGRATION_PACKAGES := xorm.io/xorm/v2/tests @@ -59,7 +59,7 @@ build: go-check $(GO_SOURCES) .PHONY: clean clean: $(GO) clean -i ./... - rm -rf *.sql *.log test.db cover.out cover.html *coverage.out coverage.all integrations/*.sql + rm -rf *.sql *.log test.db cover.out cover.html *coverage.out coverage.all tests/*.sql .PHONY: coverage coverage: diff --git a/dialects/dameng.go b/dialects/dameng.go index 0c4a2d06..b950059f 100644 --- a/dialects/dameng.go +++ b/dialects/dameng.go @@ -14,7 +14,7 @@ import ( "strings" "xorm.io/xorm/v2/convert" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/internal/utils" "xorm.io/xorm/v2/schemas" ) diff --git a/dialects/dialect.go b/dialects/dialect.go index a5a3961e..14caa992 100644 --- a/dialects/dialect.go +++ b/dialects/dialect.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/dialects/driver.go b/dialects/driver.go index bafea61e..d9fd00c1 100644 --- a/dialects/driver.go +++ b/dialects/driver.go @@ -9,7 +9,7 @@ import ( "fmt" "time" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" ) // ScanContext represents a context when Scan diff --git a/dialects/mssql.go b/dialects/mssql.go index 71b7c1e8..0063235a 100644 --- a/dialects/mssql.go +++ b/dialects/mssql.go @@ -13,7 +13,7 @@ import ( "strconv" "strings" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/dialects/mysql.go b/dialects/mysql.go index fe794ffb..aadf5e30 100644 --- a/dialects/mysql.go +++ b/dialects/mysql.go @@ -13,7 +13,7 @@ import ( "strconv" "strings" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/dialects/oracle.go b/dialects/oracle.go index 0f32e2ff..0d5712d6 100644 --- a/dialects/oracle.go +++ b/dialects/oracle.go @@ -13,7 +13,7 @@ import ( "strconv" "strings" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/dialects/postgres.go b/dialects/postgres.go index 044dca79..031460a2 100644 --- a/dialects/postgres.go +++ b/dialects/postgres.go @@ -13,7 +13,7 @@ import ( "strconv" "strings" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/dialects/sqlite3.go b/dialects/sqlite3.go index c1937109..d6fa49b4 100644 --- a/dialects/sqlite3.go +++ b/dialects/sqlite3.go @@ -12,7 +12,7 @@ import ( "regexp" "strings" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/engine.go b/engine.go index cede60e9..49d5d833 100644 --- a/engine.go +++ b/engine.go @@ -18,8 +18,8 @@ import ( "time" "xorm.io/xorm/v2/contexts" - "xorm.io/xorm/v2/core" "xorm.io/xorm/v2/dialects" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/internal/utils" "xorm.io/xorm/v2/log" "xorm.io/xorm/v2/names" @@ -140,7 +140,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 @@ -160,7 +160,7 @@ func (engine *Engine) SetLogger(logger interface{}) { panic("logger should implement either log.ContextLogger or log.Logger") } engine.logger = realLogger - engine.DB().Logger = realLogger + engine.db.Logger = realLogger } // SetLogLevel sets the logger level @@ -232,22 +232,22 @@ func (engine *Engine) SQLType(c *schemas.Column) 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) } // SetConnMaxIdleTime sets the maximum amount of time a connection may be idle. func (engine *Engine) SetConnMaxIdleTime(d time.Duration) { - engine.DB().SetConnMaxIdleTime(d) + engine.db.SetConnMaxIdleTime(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) } // NoCascade If you do not want to auto cascade load object @@ -257,16 +257,6 @@ func (engine *Engine) NoCascade() *Session { return session.NoCascade() } -// NewDB provides an interface to operate database directly -func (engine *Engine) NewDB() (*core.DB, error) { - return core.Open(engine.driverName, engine.dataSourceName) -} - -// DB return the wrapper of sql.DB -func (engine *Engine) DB() *core.DB { - return engine.db -} - // Dialect return database dialect func (engine *Engine) Dialect() dialects.Dialect { return engine.dialect @@ -279,7 +269,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 @@ -518,7 +508,7 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w colNames := engine.dialect.Quoter().Join(cols, ", ") destColNames := dstDialect.Quoter().Join(dstCols, ", ") - rows, err := engine.DB().QueryContext(engine.defaultContext, "SELECT "+colNames+" FROM "+engine.Quote(originalTableName)) + rows, err := engine.db.QueryContext(engine.defaultContext, "SELECT "+colNames+" FROM "+engine.Quote(originalTableName)) if err != nil { return err } diff --git a/engine_group.go b/engine_group.go index 41855253..ee4c97f5 100644 --- a/engine_group.go +++ b/engine_group.go @@ -169,17 +169,17 @@ func (eg *EngineGroup) SetTagIdentifier(tagIdentifier string) { // SetMaxIdleConns set the max idle connections on pool, default is 2 func (eg *EngineGroup) SetMaxIdleConns(conns int) { - eg.Engine.DB().SetMaxIdleConns(conns) + eg.Engine.db.SetMaxIdleConns(conns) for i := 0; i < len(eg.slaves); i++ { - eg.slaves[i].DB().SetMaxIdleConns(conns) + eg.slaves[i].db.SetMaxIdleConns(conns) } } // SetMaxOpenConns is only available for go 1.2+ func (eg *EngineGroup) SetMaxOpenConns(conns int) { - eg.Engine.DB().SetMaxOpenConns(conns) + eg.Engine.db.SetMaxOpenConns(conns) for i := 0; i < len(eg.slaves); i++ { - eg.slaves[i].DB().SetMaxOpenConns(conns) + eg.slaves[i].db.SetMaxOpenConns(conns) } } diff --git a/engine_group_policy.go b/engine_group_policy.go index 1def8ce4..45028862 100644 --- a/engine_group_policy.go +++ b/engine_group_policy.go @@ -25,7 +25,7 @@ func (h GroupPolicyHandler) Slave(eg *EngineGroup) *Engine { // RandomPolicy implmentes randomly chose the slave of slaves func RandomPolicy() GroupPolicyHandler { - var r = rand.New(rand.NewSource(time.Now().UnixNano())) + r := rand.New(rand.NewSource(time.Now().UnixNano())) return func(g *EngineGroup) *Engine { return g.Slaves()[r.Intn(len(g.Slaves()))] } @@ -33,16 +33,16 @@ func RandomPolicy() GroupPolicyHandler { // WeightRandomPolicy implmentes randomly chose the slave of slaves func WeightRandomPolicy(weights []int) GroupPolicyHandler { - var rands = make([]int, 0, len(weights)) + rands := make([]int, 0, len(weights)) for i := 0; i < len(weights); i++ { for n := 0; n < weights[i]; n++ { rands = append(rands, i) } } - var r = rand.New(rand.NewSource(time.Now().UnixNano())) + r := rand.New(rand.NewSource(time.Now().UnixNano())) return func(g *EngineGroup) *Engine { - var slaves = g.Slaves() + slaves := g.Slaves() idx := rands[r.Intn(len(rands))] if idx >= len(slaves) { idx = len(slaves) - 1 @@ -53,10 +53,10 @@ func WeightRandomPolicy(weights []int) GroupPolicyHandler { // RoundRobinPolicy returns a group policy handler func RoundRobinPolicy() GroupPolicyHandler { - var pos = -1 + pos := -1 var lock sync.Mutex return func(g *EngineGroup) *Engine { - var slaves = g.Slaves() + slaves := g.Slaves() lock.Lock() defer lock.Unlock() @@ -71,17 +71,17 @@ func RoundRobinPolicy() GroupPolicyHandler { // WeightRoundRobinPolicy returns a group policy handler func WeightRoundRobinPolicy(weights []int) GroupPolicyHandler { - var rands = make([]int, 0, len(weights)) + rands := make([]int, 0, len(weights)) for i := 0; i < len(weights); i++ { for n := 0; n < weights[i]; n++ { rands = append(rands, i) } } - var pos = -1 + pos := -1 var lock sync.Mutex return func(g *EngineGroup) *Engine { - var slaves = g.Slaves() + slaves := g.Slaves() lock.Lock() defer lock.Unlock() pos++ @@ -100,11 +100,11 @@ func WeightRoundRobinPolicy(weights []int) GroupPolicyHandler { // LeastConnPolicy implements GroupPolicy, every time will get the least connections slave func LeastConnPolicy() GroupPolicyHandler { return func(g *EngineGroup) *Engine { - var slaves = g.Slaves() + slaves := g.Slaves() connections := 0 idx := 0 for i := 0; i < len(slaves); i++ { - openConnections := slaves[i].DB().Stats().OpenConnections + openConnections := slaves[i].db.Stats().OpenConnections if i == 0 { connections = openConnections idx = i diff --git a/core/db.go b/internal/core/db.go similarity index 100% rename from core/db.go rename to internal/core/db.go diff --git a/core/db_test.go b/internal/core/db_test.go similarity index 100% rename from core/db_test.go rename to internal/core/db_test.go diff --git a/core/error.go b/internal/core/error.go similarity index 100% rename from core/error.go rename to internal/core/error.go diff --git a/core/interface.go b/internal/core/interface.go similarity index 100% rename from core/interface.go rename to internal/core/interface.go diff --git a/core/rows.go b/internal/core/rows.go similarity index 100% rename from core/rows.go rename to internal/core/rows.go diff --git a/core/scan.go b/internal/core/scan.go similarity index 100% rename from core/scan.go rename to internal/core/scan.go diff --git a/core/stmt.go b/internal/core/stmt.go similarity index 100% rename from core/stmt.go rename to internal/core/stmt.go diff --git a/core/tx.go b/internal/core/tx.go similarity index 100% rename from core/tx.go rename to internal/core/tx.go diff --git a/rows.go b/rows.go index 3bc1268e..9f5a4849 100644 --- a/rows.go +++ b/rows.go @@ -10,7 +10,7 @@ import ( "reflect" "xorm.io/builder" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" ) // Rows rows wrapper a rows to diff --git a/scan.go b/scan.go index e8f65b64..288abc60 100644 --- a/scan.go +++ b/scan.go @@ -12,8 +12,8 @@ import ( "time" "xorm.io/xorm/v2/convert" - "xorm.io/xorm/v2/core" "xorm.io/xorm/v2/dialects" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/schemas" ) diff --git a/session.go b/session.go index 4b64d1aa..f9c6abac 100644 --- a/session.go +++ b/session.go @@ -19,7 +19,7 @@ import ( "xorm.io/xorm/v2/contexts" "xorm.io/xorm/v2/convert" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/internal/json" "xorm.io/xorm/v2/internal/statements" "xorm.io/xorm/v2/log" @@ -339,11 +339,6 @@ func (session *Session) Having(conditions string) *Session { return session } -// DB db return the wrapper of sql.DB -func (session *Session) DB() *core.DB { - return session.db() -} - func (session *Session) doPrepare(db *core.DB, sqlStr string) (stmt *core.Stmt, err error) { crc := crc32.ChecksumIEEE([]byte(sqlStr)) // TODO try hash(sqlStr+len(sqlStr)) @@ -759,7 +754,7 @@ func (session *Session) PingContext(ctx context.Context) error { } session.engine.logger.Infof("PING DATABASE %v", session.engine.DriverName()) - return session.DB().PingContext(ctx) + return session.db().PingContext(ctx) } // disable version check diff --git a/session_get.go b/session_get.go index 20c441f3..f16d5f8b 100644 --- a/session_get.go +++ b/session_get.go @@ -13,7 +13,7 @@ import ( "time" "xorm.io/xorm/v2/convert" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" "xorm.io/xorm/v2/internal/utils" "xorm.io/xorm/v2/schemas" ) diff --git a/session_raw.go b/session_raw.go index 664fe2ca..6bda2f0f 100644 --- a/session_raw.go +++ b/session_raw.go @@ -8,7 +8,7 @@ import ( "database/sql" "strings" - "xorm.io/xorm/v2/core" + "xorm.io/xorm/v2/internal/core" ) func (session *Session) queryPreprocess(sqlStr *string, paramStr ...interface{}) { @@ -34,9 +34,9 @@ func (session *Session) queryRows(sqlStr string, args ...interface{}) (*core.Row if session.isAutoCommit { var db *core.DB if session.sessionType == groupSession && strings.EqualFold(strings.TrimSpace(sqlStr)[:6], "select") && !session.statement.IsForUpdate { - db = session.engine.engineGroup.Slave().DB() + db = session.engine.engineGroup.Slave().db } else { - db = session.DB() + db = session.db() } if session.prepareStmt { @@ -168,14 +168,14 @@ func (session *Session) exec(sqlStr string, args ...interface{}) (sql.Result, er } if session.prepareStmt { - stmt, err := session.doPrepare(session.DB(), sqlStr) + stmt, err := session.doPrepare(session.db(), sqlStr) if err != nil { return nil, err } return stmt.ExecContext(session.ctx, args...) } - return session.DB().ExecContext(session.ctx, sqlStr, args...) + return session.db().ExecContext(session.ctx, sqlStr, args...) } // Exec raw sql diff --git a/session_schema.go b/session_schema.go index 4587a02c..7703e30b 100644 --- a/session_schema.go +++ b/session_schema.go @@ -24,7 +24,7 @@ func (session *Session) Ping() error { } session.engine.logger.Infof("PING DATABASE %v", session.engine.DriverName()) - return session.DB().PingContext(session.ctx) + return session.db().PingContext(session.ctx) } // CreateTable create a table according a bean diff --git a/session_tx.go b/session_tx.go index 4fa56891..91b706d7 100644 --- a/session_tx.go +++ b/session_tx.go @@ -7,7 +7,7 @@ package xorm // Begin a transaction func (session *Session) Begin() error { if session.isAutoCommit { - tx, err := session.DB().BeginTx(session.ctx, nil) + tx, err := session.db().BeginTx(session.ctx, nil) if err != nil { return err }