bilibili-backup/library/database/orm/timestamp.go
2019-04-22 02:59:20 +00:00

36 lines
844 B
Go

package orm
import (
. "github.com/jinzhu/gorm"
)
func init() {
DefaultCallback.Create().Replace("gorm:update_time_stamp", updateTimeStampForCreateCallback)
DefaultCallback.Update().Replace("gorm:update_time_stamp", updateTimeStampForUpdateCallback)
}
// updateTimeStampForCreateCallback will set `ctime`, `mtime` when creating
func updateTimeStampForCreateCallback(scope *Scope) {
if !scope.HasError() {
now := NowFunc()
if createdAtField, ok := scope.FieldByName("ctime"); ok {
if createdAtField.IsBlank {
createdAtField.Set(now)
}
}
if updatedAtField, ok := scope.FieldByName("mtime"); ok {
if updatedAtField.IsBlank {
updatedAtField.Set(now)
}
}
}
}
func updateTimeStampForUpdateCallback(scope *Scope) {
if _, ok := scope.Get("gorm:update_column"); !ok {
scope.SetColumn("mtime", NowFunc())
}
}