Modify ToSQL function signature

add error return value
This commit is contained in:
打谷机 2022-11-01 19:37:29 +08:00 committed by GitHub
parent 9d82aa5673
commit 983443da0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

14
gorm.go
View File

@ -464,15 +464,19 @@ func (db *DB) Use(plugin Plugin) error {
// ToSQL for generate SQL string. // ToSQL for generate SQL string.
// //
// db.ToSQL(func(tx *gorm.DB) *gorm.DB { // db.ToSQL(func(tx *gorm.DB) (*gorm.DB, error) {
// return tx.Model(&User{}).Where(&User{Name: "foo", Age: 20}) // return tx.Model(&User{}).Where(&User{Name: "foo", Age: 20})
// .Limit(10).Offset(5) // .Limit(10).Offset(5)
// .Order("name ASC") // .Order("name ASC")
// .First(&User{}) // .First(&User{}), nil
// }) // })
func (db *DB) ToSQL(queryFn func(tx *DB) *DB) string { func (db *DB) ToSQL(queryFn func(tx *DB) (*DB, error)) (string, error) {
tx := queryFn(db.Session(&Session{DryRun: true, SkipDefaultTransaction: true})) tx, err := queryFn(db.Session(&Session{DryRun: true, SkipDefaultTransaction: true}))
if err != nil {
return "", err
}
stmt := tx.Statement stmt := tx.Statement
return db.Dialector.Explain(stmt.SQL.String(), stmt.Vars...) return db.Dialector.Explain(stmt.SQL.String(), stmt.Vars...), nil
} }