forked from mirror/gorm
Refact do
This commit is contained in:
parent
c3d2746912
commit
ca6b074dc6
11
do.go
11
do.go
|
@ -5,6 +5,7 @@ import (
|
|||
"database/sql/driver"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/jinzhu/gorm/dialect"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strconv"
|
||||
|
@ -37,6 +38,10 @@ func (s *Do) table() string {
|
|||
return s.tableName
|
||||
}
|
||||
|
||||
func (s *Do) dialect() dialect.Dialect {
|
||||
return s.db.parent.dialect
|
||||
}
|
||||
|
||||
func (s *Do) err(err error) error {
|
||||
if err != nil {
|
||||
s.db.err(err)
|
||||
|
@ -57,7 +62,7 @@ func (s *Do) setModel(value interface{}) *Do {
|
|||
|
||||
func (s *Do) addToVars(value interface{}) string {
|
||||
s.sqlVars = append(s.sqlVars, value)
|
||||
return fmt.Sprintf(s.db.dialect.BinVar(), len(s.sqlVars))
|
||||
return fmt.Sprintf(s.dialect().BinVar(), len(s.sqlVars))
|
||||
}
|
||||
|
||||
func (s *Do) trace(t time.Time) {
|
||||
|
@ -97,7 +102,7 @@ func (s *Do) prepareCreateSql() {
|
|||
s.table(),
|
||||
strings.Join(columns, ","),
|
||||
strings.Join(sqls, ","),
|
||||
s.db.dialect.ReturningStr(s.model.primaryKeyDb()),
|
||||
s.dialect().ReturningStr(s.model.primaryKeyDb()),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
@ -173,7 +178,7 @@ func (s *Do) create() (i interface{}) {
|
|||
var id interface{}
|
||||
|
||||
now := time.Now()
|
||||
if s.db.dialect.SupportLastInsertId() {
|
||||
if s.dialect().SupportLastInsertId() {
|
||||
if sql_result, err := s.db.db.Exec(s.sql, s.sqlVars...); s.err(err) == nil {
|
||||
id, err = sql_result.LastInsertId()
|
||||
s.err(err)
|
||||
|
|
4
field.go
4
field.go
|
@ -61,9 +61,9 @@ func (f *Field) sqlTag() (str string) {
|
|||
|
||||
if len(typ) == 0 {
|
||||
if f.isPrimaryKey {
|
||||
typ = f.model.do.db.dialect.PrimaryKeyTag(value, size)
|
||||
typ = f.model.do.dialect().PrimaryKeyTag(value, size)
|
||||
} else {
|
||||
typ = f.model.do.db.dialect.SqlTag(value, size)
|
||||
typ = f.model.do.dialect().SqlTag(value, size)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ func init() {
|
|||
func TestSaveAndFind(t *testing.T) {
|
||||
name := "save_and_find"
|
||||
u := &User{Name: name, Age: 1}
|
||||
db.Save(u)
|
||||
db.Debug().Save(u)
|
||||
if u.Id == 0 {
|
||||
t.Errorf("Should have ID after create record")
|
||||
}
|
||||
|
|
|
@ -6,7 +6,12 @@ import (
|
|||
)
|
||||
|
||||
func (s *DB) clone() *DB {
|
||||
db := &DB{db: s.db, parent: s.parent, search: s.parent.search.clone()}
|
||||
db := &DB{db: s.db, parent: s.parent}
|
||||
if s.parent.search == nil {
|
||||
db.search = &search{}
|
||||
} else {
|
||||
db.search = s.parent.search.clone()
|
||||
}
|
||||
db.search.db = db
|
||||
return db
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue