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.
//
// 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})
// .Limit(10).Offset(5)
// .Order("name ASC")
// .First(&User{})
// .First(&User{}), nil
// })
func (db *DB) ToSQL(queryFn func(tx *DB) *DB) string {
tx := queryFn(db.Session(&Session{DryRun: true, SkipDefaultTransaction: true}))
func (db *DB) ToSQL(queryFn func(tx *DB) (*DB, error)) (string, error) {
tx, err := queryFn(db.Session(&Session{DryRun: true, SkipDefaultTransaction: true}))
if err != nil {
return "", err
}
stmt := tx.Statement
return db.Dialector.Explain(stmt.SQL.String(), stmt.Vars...)
return db.Dialector.Explain(stmt.SQL.String(), stmt.Vars...), nil
}