some bug fixed and some function deprecated

This commit is contained in:
Lunny Xiao 2013-06-12 21:51:39 +08:00
parent 0d7fdfb5bf
commit e68c855ee3
4 changed files with 45 additions and 10 deletions

19
deprecated.go Normal file
View File

@ -0,0 +1,19 @@
package xorm
// all content in this file will be removed from xorm some times after
// @deprecation : please use NewSession instead
func (engine *Engine) MakeSession() (Session, error) {
s, err := engine.NewSession()
if err == nil {
return *s, err
} else {
return Session{}, err
}
}
// @deprecation : please use NewEngine instead
func Create(driverName string, dataSourceName string) Engine {
engine := NewEngine(driverName, dataSourceName)
return *engine
}

View File

@ -50,17 +50,25 @@ func (e *Engine) OpenDB() (*sql.DB, error) {
return sql.Open(e.DriverName, e.DataSourceName) return sql.Open(e.DriverName, e.DataSourceName)
} }
func (engine *Engine) MakeSession() (session Session, err error) { func (engine *Engine) NewSession() (session *Session, err error) {
db, err := engine.OpenDB() db, err := engine.OpenDB()
if err != nil { if err != nil {
return Session{}, err return nil, err
} }
session = Session{Engine: engine, Db: db} session = &Session{Engine: engine, Db: db}
session.Init() session.Init()
return return
} }
func (engine *Engine) Test() error {
session, err := engine.NewSession()
if err != nil {
return err
}
return session.Db.Ping()
}
func (engine *Engine) Where(querystring string, args ...interface{}) *Engine { func (engine *Engine) Where(querystring string, args ...interface{}) *Engine {
engine.Statement.Where(querystring, args...) engine.Statement.Where(querystring, args...)
return engine return engine
@ -260,9 +268,15 @@ func (e *Engine) DropAll() error {
func (e *Engine) CreateTables(beans ...interface{}) error { func (e *Engine) CreateTables(beans ...interface{}) error {
session, err := e.MakeSession() session, err := e.MakeSession()
session.Begin() if err != nil {
session.Statement = e.Statement return err
}
defer session.Close() defer session.Close()
err = session.Begin()
if err != nil {
return err
}
session.Statement = e.Statement
defer e.Statement.Init() defer e.Statement.Init()
if err != nil { if err != nil {
return err return err

View File

@ -88,14 +88,16 @@ func (session *Session) Having(conditions string) *Session {
func (session *Session) Begin() error { func (session *Session) Begin() error {
if session.IsAutoCommit { if session.IsAutoCommit {
tx, err := session.Db.Begin()
if err != nil {
return err
}
session.IsAutoCommit = false session.IsAutoCommit = false
session.IsCommitedOrRollbacked = false session.IsCommitedOrRollbacked = false
tx, err := session.Db.Begin()
session.Tx = tx session.Tx = tx
if session.Engine.ShowSQL { if session.Engine.ShowSQL {
fmt.Println("BEGIN TRANSACTION") fmt.Println("BEGIN TRANSACTION")
} }
return err
} }
return nil return nil
} }

View File

@ -4,12 +4,12 @@ import (
"reflect" "reflect"
) )
func Create(driverName string, dataSourceName string) Engine { func NewEngine(driverName string, dataSourceName string) *Engine {
engine := Engine{ShowSQL: false, DriverName: driverName, Mapper: SnakeMapper{}, engine := &Engine{ShowSQL: false, DriverName: driverName, Mapper: SnakeMapper{},
DataSourceName: dataSourceName} DataSourceName: dataSourceName}
engine.Tables = make(map[reflect.Type]Table) engine.Tables = make(map[reflect.Type]Table)
engine.Statement.Engine = &engine engine.Statement.Engine = engine
engine.InsertMany = true engine.InsertMany = true
engine.TagIdentifier = "xorm" engine.TagIdentifier = "xorm"
if driverName == SQLITE { if driverName == SQLITE {