Fix deleted tag attribute zeroTime is not DatabaseTZ

This commit is contained in:
CyJaySong 2023-07-14 08:39:36 +08:00
parent f33221df74
commit 7e11f585aa
2 changed files with 42 additions and 1 deletions

View File

@ -1202,3 +1202,43 @@ func TestInsertMultipleMap(t *testing.T) {
Name: "xiaolunwen", Name: "xiaolunwen",
}, res[1]) }, res[1])
} }
func TestInsertNotDeleted(t *testing.T) {
assert.NoError(t, PrepareEngine())
zeroTime := time.Date(1, 1, 1, 0, 0, 0, 0, testEngine.GetTZDatabase())
type InsertDeletedStructNotRight struct {
ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull"`
}
// notnull tag will be ignored
err := testEngine.Sync(new(InsertDeletedStructNotRight))
assert.NoError(t, err)
type InsertDeletedStruct struct {
ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted"`
}
assert.NoError(t, testEngine.Sync(new(InsertDeletedStruct)))
var v1 InsertDeletedStructNotRight
_, err = testEngine.Insert(&v1)
assert.NoError(t, err)
var v2 InsertDeletedStructNotRight
has, err := testEngine.Get(&v2)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, v2.DeletedAt.In(testEngine.GetTZDatabase()).Format("2006-01-02 15:04:05"), zeroTime.Format("2006-01-02 15:04:05"))
var v3 InsertDeletedStruct
_, err = testEngine.Insert(&v3)
assert.NoError(t, err)
var v4 InsertDeletedStruct
has, err = testEngine.Get(&v4)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, v4.DeletedAt.In(testEngine.GetTZDatabase()).Format("2006-01-02 15:04:05"), zeroTime.Format("2006-01-02 15:04:05"))
}

View File

@ -482,7 +482,8 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac
} }
if col.IsDeleted { if col.IsDeleted {
arg, err := dialects.FormatColumnTime(session.engine.dialect, session.engine.DatabaseTZ, col, time.Time{}) zeroTime := time.Date(1, 1, 1, 0, 0, 0, 0, session.engine.DatabaseTZ)
arg, err := dialects.FormatColumnTime(session.engine.dialect, session.engine.DatabaseTZ, col, zeroTime)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }