This commit is contained in:
Lunny Xiao 2015-02-23 12:24:26 +08:00
parent 5cdb680945
commit 507ee4df02
3 changed files with 24 additions and 4 deletions

View File

@ -1405,6 +1405,11 @@ func (engine *Engine) NowTime(sqlTypeName string) interface{} {
return engine.FormatTime(sqlTypeName, t) return engine.FormatTime(sqlTypeName, t)
} }
func (engine *Engine) NowTime2(sqlTypeName string) (interface{}, time.Time) {
t := time.Now()
return engine.FormatTime(sqlTypeName, t), t
}
func (engine *Engine) FormatTime(sqlTypeName string, t time.Time) (v interface{}) { func (engine *Engine) FormatTime(sqlTypeName string, t time.Time) (v interface{}) {
switch sqlTypeName { switch sqlTypeName {
case core.Time: case core.Time:

View File

@ -336,10 +336,21 @@ func genCols(table *core.Table, session *Session, bean interface{}, useCol bool,
} }
if (col.IsCreated || col.IsUpdated) && session.Statement.UseAutoTime { if (col.IsCreated || col.IsUpdated) && session.Statement.UseAutoTime {
args = append(args, session.Engine.NowTime(col.SQLType.Name)) val, t := session.Engine.NowTime2(col.SQLType.Name)
args = append(args, val)
session.afterClosures = append(session.afterClosures, func(bean interface{}) {
v, _ := col.ValueOf(bean)
switch v.Type().Kind() {
case reflect.Struct:
v.Set(reflect.ValueOf(t))
case reflect.Int, reflect.Int64, reflect.Int32:
v.SetInt(t.Unix())
case reflect.Uint, reflect.Uint64, reflect.Uint32:
v.SetUint(uint64(t.Unix()))
}
})
} else if col.IsVersion && session.Statement.checkVersion { } else if col.IsVersion && session.Statement.checkVersion {
args = append(args, 1) args = append(args, 1)
//} else if !col.DefaultIsEmpty {
} else { } else {
arg, err := session.value2Interface(col, fieldValue) arg, err := session.value2Interface(col, fieldValue)
if err != nil { if err != nil {

View File

@ -1626,7 +1626,6 @@ func (session *Session) row2Bean(rows *core.Rows, fields []string, fieldsCount i
} }
func (session *Session) _row2Bean(rows *core.Rows, fields []string, fieldsCount int, bean interface{}, dataStruct *reflect.Value, table *core.Table) error { func (session *Session) _row2Bean(rows *core.Rows, fields []string, fieldsCount int, bean interface{}, dataStruct *reflect.Value, table *core.Table) error {
scanResults := make([]interface{}, fieldsCount) scanResults := make([]interface{}, fieldsCount)
for i := 0; i < len(fields); i++ { for i := 0; i < len(fields); i++ {
var cell interface{} var cell interface{}
@ -1766,6 +1765,12 @@ func (session *Session) _row2Bean(rows *core.Rows, fields []string, fieldsCount
// t = fieldValue.Interface().(time.Time) // t = fieldValue.Interface().(time.Time)
// z, _ = t.Zone() // z, _ = t.Zone()
// session.Engine.LogDebug("fieldValue key[%v]: %v | zone: %v | location: %+v\n", key, t, z, *t.Location()) // session.Engine.LogDebug("fieldValue key[%v]: %v | zone: %v | location: %+v\n", key, t, z, *t.Location())
} else if rawValueType == core.IntType || rawValueType == core.Int64Type ||
rawValueType == core.Int32Type {
hasAssigned = true
t := time.Unix(vv.Int(), 0).In(session.Engine.TZLocation)
vv = reflect.ValueOf(t)
fieldValue.Set(vv)
} }
} else if session.Statement.UseCascade { } else if session.Statement.UseCascade {
table := session.Engine.autoMapType(*fieldValue) table := session.Engine.autoMapType(*fieldValue)
@ -3783,7 +3788,6 @@ func (session *Session) Delete(bean interface{}) (int64, error) {
copy(afterClosures, session.afterClosures) copy(afterClosures, session.afterClosures)
session.afterDeleteBeans[bean] = &afterClosures session.afterDeleteBeans[bean] = &afterClosures
} }
} else { } else {
if _, ok := interface{}(bean).(AfterInsertProcessor); ok { if _, ok := interface{}(bean).(AfterInsertProcessor); ok {
session.afterDeleteBeans[bean] = nil session.afterDeleteBeans[bean] = nil