fixed some bugs
This commit is contained in:
parent
433af9ae44
commit
65608363e3
35
engine.go
35
engine.go
|
@ -98,63 +98,58 @@ func (engine *Engine) Test() error {
|
||||||
|
|
||||||
func (engine *Engine) Sql(querystring string, args ...interface{}) *Session {
|
func (engine *Engine) Sql(querystring string, args ...interface{}) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Sql(querystring, args...)
|
return session.Sql(querystring, args...)
|
||||||
return session
|
}
|
||||||
|
|
||||||
|
func (engine *Engine) Cascade(trueOrFalse ...bool) *Session {
|
||||||
|
session := engine.NewSession()
|
||||||
|
return session.Cascade(trueOrFalse...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) Where(querystring string, args ...interface{}) *Session {
|
func (engine *Engine) Where(querystring string, args ...interface{}) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Where(querystring, args...)
|
return session.Where(querystring, args...)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) Id(id int64) *Session {
|
func (engine *Engine) Id(id int64) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Id(id)
|
return session.Id(id)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) In(column string, args ...interface{}) *Session {
|
func (engine *Engine) In(column string, args ...interface{}) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.In(column, args...)
|
return session.In(column, args...)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) Table(tableName string) *Session {
|
func (engine *Engine) Table(tableName string) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Table(tableName)
|
return session.Table(tableName)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) Limit(limit int, start ...int) *Session {
|
func (engine *Engine) Limit(limit int, start ...int) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Limit(limit, start...)
|
return session.Limit(limit, start...)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) OrderBy(order string) *Session {
|
func (engine *Engine) OrderBy(order string) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.OrderBy(order)
|
return session.OrderBy(order)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
|
//The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
|
||||||
func (engine *Engine) Join(join_operator, tablename, condition string) *Session {
|
func (engine *Engine) Join(join_operator, tablename, condition string) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Join(join_operator, tablename, condition)
|
return session.Join(join_operator, tablename, condition)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) GroupBy(keys string) *Session {
|
func (engine *Engine) GroupBy(keys string) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.GroupBy(keys)
|
return session.GroupBy(keys)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (engine *Engine) Having(conditions string) *Session {
|
func (engine *Engine) Having(conditions string) *Session {
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
session.Having(conditions)
|
return session.Having(conditions)
|
||||||
return session
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// some lock needed
|
// some lock needed
|
||||||
|
|
41
session.go
41
session.go
|
@ -487,6 +487,7 @@ func (session *Session) Query(sql string, paramStr ...interface{}) (resultsSlice
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: this statement should be invoke before Query
|
||||||
if session.Statement.RefTable != nil && session.Statement.RefTable.PrimaryKey != "" {
|
if session.Statement.RefTable != nil && session.Statement.RefTable.PrimaryKey != "" {
|
||||||
sql = strings.Replace(sql, "(id)", session.Statement.RefTable.PrimaryKey, -1)
|
sql = strings.Replace(sql, "(id)", session.Statement.RefTable.PrimaryKey, -1)
|
||||||
}
|
}
|
||||||
|
@ -552,6 +553,8 @@ func (session *Session) Query(sql string, paramStr ...interface{}) (resultsSlice
|
||||||
if aa.String() == "time.Time" {
|
if aa.String() == "time.Time" {
|
||||||
str = rawValue.Interface().(time.Time).Format("2006-01-02 15:04:05.000 -0700")
|
str = rawValue.Interface().(time.Time).Format("2006-01-02 15:04:05.000 -0700")
|
||||||
result[key] = []byte(str)
|
result[key] = []byte(str)
|
||||||
|
} else {
|
||||||
|
fmt.Print("Unsupported struct type")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//default:
|
//default:
|
||||||
|
@ -729,24 +732,32 @@ func (session *Session) InsertOne(bean interface{}) (int64, error) {
|
||||||
if col.MapType == ONLYFROMDB {
|
if col.MapType == ONLYFROMDB {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if fieldTable, ok := session.Engine.Tables[fieldValue.Type()]; ok {
|
if fieldValue.Type().String() == "time.Time" {
|
||||||
if fieldTable.PrimaryKey != "" {
|
args = append(args, val)
|
||||||
pkField := reflect.Indirect(fieldValue).FieldByName(fieldTable.PKColumn().FieldName)
|
} else if fieldValue.Type().Kind() == reflect.Struct {
|
||||||
args = append(args, pkField.Interface())
|
if fieldValue.CanAddr() {
|
||||||
} else {
|
if fieldConvert, ok := fieldValue.Addr().Interface().(Conversion); ok {
|
||||||
continue
|
data, err := fieldConvert.ToDB()
|
||||||
}
|
if err != nil {
|
||||||
} else if fieldValue.Type().Kind() == reflect.Struct &&
|
return 0, err
|
||||||
fieldValue.CanAddr() {
|
} else {
|
||||||
if fieldConvert, ok := fieldValue.Addr().Interface().(Conversion); ok {
|
args = append(args, string(data))
|
||||||
data, err := fieldConvert.ToDB()
|
}
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
} else {
|
} else {
|
||||||
args = append(args, string(data))
|
if fieldTable, ok := session.Engine.Tables[fieldValue.Type()]; ok {
|
||||||
|
if fieldTable.PrimaryKey != "" {
|
||||||
|
pkField := reflect.Indirect(fieldValue).FieldByName(fieldTable.PKColumn().FieldName)
|
||||||
|
args = append(args, pkField.Interface())
|
||||||
|
} else {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//args = append(args, val)
|
||||||
|
continue
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
args = append(args, val)
|
continue
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
args = append(args, val)
|
args = append(args, val)
|
||||||
|
|
|
@ -96,13 +96,15 @@ func BuildConditions(engine *Engine, table *Table, bean interface{}) ([]string,
|
||||||
if t.IsZero() {
|
if t.IsZero() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
engine.AutoMapType(fieldValue.Type())
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if table, ok := engine.Tables[fieldValue.Type()]; ok {
|
if table, ok := engine.Tables[fieldValue.Type()]; ok {
|
||||||
pkField := reflect.Indirect(fieldValue).FieldByName(table.PKColumn().FieldName)
|
pkField := reflect.Indirect(fieldValue).FieldByName(table.PKColumn().FieldName)
|
||||||
fmt.Println(pkField.Interface())
|
|
||||||
if pkField.Int() != 0 {
|
if pkField.Int() != 0 {
|
||||||
args = append(args, pkField.Interface())
|
args = append(args, pkField.Interface())
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue