This commit is contained in:
CyJaySong 2023-10-30 09:17:50 +08:00
parent 408217218b
commit 056952e17a
2 changed files with 28 additions and 24 deletions

View File

@ -163,7 +163,7 @@ func (statement *Statement) Reset() {
// SQL adds raw sql statement
func (statement *Statement) SQL(query interface{}, args ...interface{}) *Statement {
switch t := query.(type) {
case (*builder.Builder):
case *builder.Builder:
var err error
statement.RawSQL, statement.RawParams, err = t.ToSQL()
if err != nil {
@ -609,7 +609,7 @@ func (statement *Statement) BuildConds(table *schemas.Table, bean interface{}, i
// MergeConds merge conditions from bean and id
func (statement *Statement) MergeConds(bean interface{}) error {
if !statement.NoAutoCondition && statement.RefTable != nil {
addedTableName := (len(statement.joins) > 0)
addedTableName := len(statement.joins) > 0
autoCond, err := statement.BuildConds(statement.RefTable, bean, true, true, false, true, addedTableName)
if err != nil {
return err

View File

@ -943,7 +943,7 @@ func TestMultipleInsertTableName(t *testing.T) {
assert.NoError(t, testEngine.Table(tableName).Sync(new(NightlyRate)))
trans := testEngine.NewSession()
defer trans.Close()
defer func(trans *xorm.Session) { _ = trans.Close() }(trans)
err := trans.Begin()
assert.NoError(t, err)
@ -1031,7 +1031,7 @@ func TestInsertTwice(t *testing.T) {
}
ssn := testEngine.NewSession()
defer ssn.Close()
defer func(ssn *xorm.Session) { _ = ssn.Close() }(ssn)
err := ssn.Begin()
assert.NoError(t, err)
@ -1226,7 +1226,8 @@ func TestInsertNotDeleted(t *testing.T) {
DeletedAt time.Time `xorm:"'DELETED_AT' deleted"`
}
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedStruct)))
err = testEngine.Sync(new(TestInsertNotDeletedStruct))
assert.NoError(t, err)
var v1 TestInsertNotDeletedStructNotRight
_, err = testEngine.Insert(&v1)
@ -1264,7 +1265,8 @@ func TestInsertNotDeletedNum(t *testing.T) {
DeletedAt int64 `xorm:"'DELETED_AT' deleted INT(11)"`
}
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedNumStruct)))
err = testEngine.Sync(new(TestInsertNotDeletedNumStruct))
assert.NoError(t, err)
var v1 TestInsertNotDeletedNumStructNotRight
_, err = testEngine.Insert(&v1)
@ -1289,37 +1291,39 @@ func TestInsertNotDeletedNum(t *testing.T) {
func TestInsertNotDeletedTimeStamp(t *testing.T) {
assert.NoError(t, PrepareEngine())
type TestInsertNotDeletedTimeStampStructNotRight struct {
ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull TIMESTAMP"`
}
// notnull tag will be ignored
err := testEngine.Sync(new(TestInsertNotDeletedTimeStampStructNotRight))
assert.NoError(t, err)
// UTC time from 1970-01-01 00:00:01.000000 to 2038-01-19 03:14:07.999999
//type TestInsertNotDeletedTimeStampStructNotRight struct {
// ID uint64 `xorm:"'ID' pk autoincr"`
// DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull TIMESTAMP"`
//}
//// notnull tag will be ignored
//err := testEngine.Sync(new(TestInsertNotDeletedTimeStampStructNotRight))
//assert.NoError(t, err)
type TestInsertNotDeletedTimeStampStruct struct {
ID uint64 `xorm:"'ID' pk autoincr"`
DeletedAt time.Time `xorm:"'DELETED_AT' deleted TIMESTAMP"`
}
assert.NoError(t, testEngine.Sync(new(TestInsertNotDeletedTimeStampStruct)))
var v1 TestInsertNotDeletedTimeStampStructNotRight
_, err = testEngine.Insert(&v1)
err := testEngine.Sync(new(TestInsertNotDeletedTimeStampStruct))
assert.NoError(t, err)
var v2 TestInsertNotDeletedTimeStampStructNotRight
has, err := testEngine.Get(&v2)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, v2.DeletedAt, time.Unix(0, 0))
//var v1 TestInsertNotDeletedTimeStampStructNotRight
//_, err = testEngine.Insert(&v1)
//assert.NoError(t, err)
//
//var v2 TestInsertNotDeletedTimeStampStructNotRight
//has, err := testEngine.Get(&v2)
//assert.NoError(t, err)
//assert.True(t, has)
//assert.Equal(t, v2.DeletedAt, time.Unix(0, 0))
var v3 TestInsertNotDeletedTimeStampStruct
_, err = testEngine.Insert(&v3)
assert.NoError(t, err)
var v4 TestInsertNotDeletedTimeStampStruct
has, err = testEngine.Get(&v4)
has, err := testEngine.Get(&v4)
assert.NoError(t, err)
assert.True(t, has)
assert.Equal(t, v4.DeletedAt, time.Time{})