Skip to content

Commit

Permalink
feat: update xorm for v2
Browse files Browse the repository at this point in the history
  • Loading branch information
dapeng committed Dec 17, 2024
1 parent 8463ae6 commit b775e90
Show file tree
Hide file tree
Showing 13 changed files with 381 additions and 547 deletions.
22 changes: 12 additions & 10 deletions error.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,14 +240,16 @@ func NewInnerErrorSkip(msg string, code int, skip int) Error {

// Error Code:1001~1999 used for gone framework.
const (
GonerNameNotFound = 1001
GonerTypeNotFound = 1002
CircularDependency = 1003
GonerTypeNotMatch = 1004
ConfigError = 1005
NotSupport = 1006
LoadedError = 1007
FailInstall = 1008
InjectError = 1009
ProviderError = 1010
GonerNameNotFound = 1001
GonerTypeNotFound = 1002
CircularDependency = 1003
GonerTypeNotMatch = 1004
ConfigError = 1005
NotSupport = 1006
LoadedError = 1007
FailInstall = 1008
InjectError = 1009
ProviderError = 1010
StartError = 1011
DbRollForPanicError = 1012
)
41 changes: 40 additions & 1 deletion goner/xorm/engine_mock_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 2 additions & 6 deletions goner/xorm/implement.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ import (
"xorm.io/xorm"
)

func NewXormEngine() (gone.Angel, gone.GonerId, gone.GonerOption, gone.GonerOption) {
return newWrappedEngine(), gone.IdGoneXorm, gone.IsDefault(new(gone.XormEngine)), gone.Order3
}

func newWrappedEngine() *wrappedEngine {
return &wrappedEngine{
newFunc: newEngine,
Expand Down Expand Up @@ -70,7 +66,7 @@ func (e *wrappedEngine) SetPolicy(policy xorm.GroupPolicy) {
}
}

func (e *wrappedEngine) Start(gone.Cemetery) error {
func (e *wrappedEngine) Start() error {
err := e.create()
if err != nil {
return err
Expand Down Expand Up @@ -131,7 +127,7 @@ func (e *wrappedEngine) config() {
e.SetLogger(&dbLogger{Logger: e.log, showSql: e.conf.ShowSql})
}

func (e *wrappedEngine) Stop(gone.Cemetery) error {
func (e *wrappedEngine) Stop() error {
if e.unitTest {
return nil
}
Expand Down
87 changes: 41 additions & 46 deletions goner/xorm/implement_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,50 +10,45 @@ import (
)

func Test_engine(t *testing.T) {
gone.Prepare(func(cemetery gone.Cemetery) error {
_ = config.Priest(cemetery)
_ = logrus.Priest(cemetery)
return nil
}).AfterStart(func(in struct {
logger gone.Logger `gone:"gone-logger"`
cemetery gone.Cemetery `gone:"gone-cemetery"`
}) {

controller := gomock.NewController(t)
defer controller.Finish()

engineInterface := NewMockEngineInterface(controller)
engineInterface.EXPECT().SetConnMaxLifetime(gomock.Any())
engineInterface.EXPECT().SetMaxOpenConns(gomock.Any())
engineInterface.EXPECT().SetMaxIdleConns(gomock.Any())
engineInterface.EXPECT().SetLogger(gomock.Any())
engineInterface.EXPECT().Ping()
engineInterface.EXPECT().SQL(gomock.Any(), gomock.Any()).Return(nil)

e := wrappedEngine{
log: in.logger,
newFunc: func(driverName string, dataSourceName string) (xorm.EngineInterface, error) {
return nil, errors.New("test")
},
}

err := e.Start(in.cemetery)
assert.Error(t, err)

e.newFunc = func(driverName string, dataSourceName string) (xorm.EngineInterface, error) {
return engineInterface, nil
}

err = e.Start(in.cemetery)
assert.NoError(t, err)

originEngine := e.GetOriginEngine()
assert.Equalf(t, engineInterface, originEngine, "origin wrappedEngine is not equal")

_ = e.Sqlx("select * from user where id = ?", 1)

err = e.Start(in.cemetery)
assert.Error(t, err)

}).Run()
gone.
Test(func(in struct {
logger gone.Logger `gone:"gone-logger"`
}) {
controller := gomock.NewController(t)
defer controller.Finish()

engineInterface := NewMockEngineInterface(controller)
engineInterface.EXPECT().SetConnMaxLifetime(gomock.Any())
engineInterface.EXPECT().SetMaxOpenConns(gomock.Any())
engineInterface.EXPECT().SetMaxIdleConns(gomock.Any())
engineInterface.EXPECT().SetLogger(gomock.Any())
engineInterface.EXPECT().Ping()
engineInterface.EXPECT().SQL(gomock.Any(), gomock.Any()).Return(nil)

e := wrappedEngine{
log: in.logger,
newFunc: func(driverName string, dataSourceName string) (xorm.EngineInterface, error) {
return nil, errors.New("test")
},
}

err := e.Start()
assert.Error(t, err)

e.newFunc = func(driverName string, dataSourceName string) (xorm.EngineInterface, error) {
return engineInterface, nil
}

err = e.Start()
assert.NoError(t, err)

originEngine := e.GetOriginEngine()
assert.Equalf(t, engineInterface, originEngine, "origin wrappedEngine is not equal")

_ = e.Sqlx("select * from user where id = ?", 1)

err = e.Start()
assert.Error(t, err)

})
}
30 changes: 30 additions & 0 deletions goner/xorm/loader.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package xorm

import (
"github.com/gone-io/gone"
)

var load = gone.OnceLoad(func(loader gone.Loader) error {
engine := newWrappedEngine()
if err := loader.Load(
engine,
gone.IsDefault(new(gone.XormEngine)),
gone.HighStartPriority(),
); err != nil {
return gone.ToError(err)
}

if err := loader.Load(newProvider(engine)); err != nil {
return gone.ToError(err)
}
return nil
})

func Load(loader gone.Loader) error {
return load(loader)
}

// Priest Deprecated, use Load instead
func Priest(loader gone.Loader) error {
return Load(loader)
}
12 changes: 0 additions & 12 deletions goner/xorm/priest.go

This file was deleted.

15 changes: 0 additions & 15 deletions goner/xorm/priest_test.go

This file was deleted.

Loading

0 comments on commit b775e90

Please sign in to comment.