From ab5121609771ed2bf5285342178bd112c7a9914c Mon Sep 17 00:00:00 2001 From: wk30 Date: Thu, 13 May 2021 20:56:42 +0800 Subject: [PATCH] Fix autoUpdateTime or autoCreateTime type --- callbacks/create.go | 23 +++++++++++++++++++++-- callbacks/update.go | 6 +++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/callbacks/create.go b/callbacks/create.go index 727bd380..843e6b69 100644 --- a/callbacks/create.go +++ b/callbacks/create.go @@ -316,8 +316,27 @@ func ConvertToCreateValues(stmt *gorm.Statement) (values clause.Values) { if field.DefaultValueInterface != nil { values.Values[0][idx] = field.DefaultValueInterface field.Set(stmt.ReflectValue, field.DefaultValueInterface) - } else if field.AutoCreateTime > 0 || field.AutoUpdateTime > 0 { - field.Set(stmt.ReflectValue, curTime) + } else if field.AutoCreateTime > 0 { + if field.AutoCreateTime == schema.UnixNanosecond { + field.Set(stmt.ReflectValue, curTime.UnixNano()) + } else if field.AutoCreateTime == schema.UnixMillisecond { + field.Set(stmt.ReflectValue, curTime.UnixNano()/1e6) + } else if field.AutoCreateTime == schema.UnixSecond { + field.Set(stmt.ReflectValue, curTime.Unix()) + } else { + field.Set(stmt.ReflectValue, curTime) + } + values.Values[0][idx], _ = field.ValueOf(stmt.ReflectValue) + } else if field.AutoUpdateTime > 0 { + if field.AutoUpdateTime == schema.UnixNanosecond { + field.Set(stmt.ReflectValue, curTime.UnixNano()) + } else if field.AutoUpdateTime == schema.UnixMillisecond { + field.Set(stmt.ReflectValue, curTime.UnixNano()/1e6) + } else if field.AutoUpdateTime == schema.UnixSecond { + field.Set(stmt.ReflectValue, curTime.Unix()) + } else { + field.Set(stmt.ReflectValue, curTime) + } values.Values[0][idx], _ = field.ValueOf(stmt.ReflectValue) } } else if field.AutoUpdateTime > 0 { diff --git a/callbacks/update.go b/callbacks/update.go index 75bb02db..3196c436 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -210,10 +210,10 @@ func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) { set = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now.UnixNano()}) } else if field.AutoUpdateTime == schema.UnixMillisecond { set = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now.UnixNano() / 1e6}) - } else if field.GORMDataType == schema.Time { - set = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now}) - } else { + } else if field.AutoUpdateTime == schema.UnixSecond { set = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now.Unix()}) + } else { + set = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now}) } } }