mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2025-12-13 17:10:36 +00:00
Better Query Debugging
This commit is contained in:
parent
dc3b621380
commit
8fcb065b42
@ -410,6 +410,9 @@ func (b *BunSelectQuery) Scan(ctx context.Context, dest interface{}) (err error)
|
|||||||
// Execute the main query first
|
// Execute the main query first
|
||||||
err = b.query.Scan(ctx, dest)
|
err = b.query.Scan(ctx, dest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := b.query.String()
|
||||||
|
logger.Error("BunSelectQuery.Scan failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,6 +441,9 @@ func (b *BunSelectQuery) ScanModel(ctx context.Context) (err error) {
|
|||||||
// Execute the main query first
|
// Execute the main query first
|
||||||
err = b.query.Scan(ctx)
|
err = b.query.Scan(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := b.query.String()
|
||||||
|
logger.Error("BunSelectQuery.ScanModel failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,15 +579,25 @@ func (b *BunSelectQuery) Count(ctx context.Context) (count int, err error) {
|
|||||||
// If Model() was set, use bun's native Count() which works properly
|
// If Model() was set, use bun's native Count() which works properly
|
||||||
if b.hasModel {
|
if b.hasModel {
|
||||||
count, err := b.query.Count(ctx)
|
count, err := b.query.Count(ctx)
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := b.query.String()
|
||||||
|
logger.Error("BunSelectQuery.Count failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, wrap as subquery to avoid "Model(nil)" error
|
// Otherwise, wrap as subquery to avoid "Model(nil)" error
|
||||||
// This is needed when only Table() is set without a model
|
// This is needed when only Table() is set without a model
|
||||||
err = b.db.NewSelect().
|
countQuery := b.db.NewSelect().
|
||||||
TableExpr("(?) AS subquery", b.query).
|
TableExpr("(?) AS subquery", b.query).
|
||||||
ColumnExpr("COUNT(*)").
|
ColumnExpr("COUNT(*)")
|
||||||
Scan(ctx, &count)
|
err = countQuery.Scan(ctx, &count)
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := countQuery.String()
|
||||||
|
logger.Error("BunSelectQuery.Count (subquery) failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -592,7 +608,13 @@ func (b *BunSelectQuery) Exists(ctx context.Context) (exists bool, err error) {
|
|||||||
exists = false
|
exists = false
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
return b.query.Exists(ctx)
|
exists, err = b.query.Exists(ctx)
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := b.query.String()
|
||||||
|
logger.Error("BunSelectQuery.Exists failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
|
return exists, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// BunInsertQuery implements InsertQuery for Bun
|
// BunInsertQuery implements InsertQuery for Bun
|
||||||
@ -729,6 +751,11 @@ func (b *BunUpdateQuery) Exec(ctx context.Context) (res common.Result, err error
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
result, err := b.query.Exec(ctx)
|
result, err := b.query.Exec(ctx)
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := b.query.String()
|
||||||
|
logger.Error("BunUpdateQuery.Exec failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
return &BunResult{result: result}, err
|
return &BunResult{result: result}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -759,6 +786,11 @@ func (b *BunDeleteQuery) Exec(ctx context.Context) (res common.Result, err error
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
result, err := b.query.Exec(ctx)
|
result, err := b.query.Exec(ctx)
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := b.query.String()
|
||||||
|
logger.Error("BunDeleteQuery.Exec failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
return &BunResult{result: result}, err
|
return &BunResult{result: result}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -282,7 +282,15 @@ func (g *GormSelectQuery) Scan(ctx context.Context, dest interface{}) (err error
|
|||||||
err = logger.HandlePanic("GormSelectQuery.Scan", r)
|
err = logger.HandlePanic("GormSelectQuery.Scan", r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
return g.db.WithContext(ctx).Find(dest).Error
|
err = g.db.WithContext(ctx).Find(dest).Error
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := g.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Find(dest)
|
||||||
|
})
|
||||||
|
logger.Error("GormSelectQuery.Scan failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GormSelectQuery) ScanModel(ctx context.Context) (err error) {
|
func (g *GormSelectQuery) ScanModel(ctx context.Context) (err error) {
|
||||||
@ -294,7 +302,15 @@ func (g *GormSelectQuery) ScanModel(ctx context.Context) (err error) {
|
|||||||
if g.db.Statement.Model == nil {
|
if g.db.Statement.Model == nil {
|
||||||
return fmt.Errorf("ScanModel requires Model() to be set before scanning")
|
return fmt.Errorf("ScanModel requires Model() to be set before scanning")
|
||||||
}
|
}
|
||||||
return g.db.WithContext(ctx).Find(g.db.Statement.Model).Error
|
err = g.db.WithContext(ctx).Find(g.db.Statement.Model).Error
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := g.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Find(g.db.Statement.Model)
|
||||||
|
})
|
||||||
|
logger.Error("GormSelectQuery.ScanModel failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GormSelectQuery) Count(ctx context.Context) (count int, err error) {
|
func (g *GormSelectQuery) Count(ctx context.Context) (count int, err error) {
|
||||||
@ -306,6 +322,13 @@ func (g *GormSelectQuery) Count(ctx context.Context) (count int, err error) {
|
|||||||
}()
|
}()
|
||||||
var count64 int64
|
var count64 int64
|
||||||
err = g.db.WithContext(ctx).Count(&count64).Error
|
err = g.db.WithContext(ctx).Count(&count64).Error
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := g.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Count(&count64)
|
||||||
|
})
|
||||||
|
logger.Error("GormSelectQuery.Count failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
return int(count64), err
|
return int(count64), err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,6 +341,13 @@ func (g *GormSelectQuery) Exists(ctx context.Context) (exists bool, err error) {
|
|||||||
}()
|
}()
|
||||||
var count int64
|
var count int64
|
||||||
err = g.db.WithContext(ctx).Limit(1).Count(&count).Error
|
err = g.db.WithContext(ctx).Limit(1).Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := g.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Limit(1).Count(&count)
|
||||||
|
})
|
||||||
|
logger.Error("GormSelectQuery.Exists failed. SQL: %s. Error: %v", sqlStr, err)
|
||||||
|
}
|
||||||
return count > 0, err
|
return count > 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,6 +486,13 @@ func (g *GormUpdateQuery) Exec(ctx context.Context) (res common.Result, err erro
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
result := g.db.WithContext(ctx).Updates(g.updates)
|
result := g.db.WithContext(ctx).Updates(g.updates)
|
||||||
|
if result.Error != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := g.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Updates(g.updates)
|
||||||
|
})
|
||||||
|
logger.Error("GormUpdateQuery.Exec failed. SQL: %s. Error: %v", sqlStr, result.Error)
|
||||||
|
}
|
||||||
return &GormResult{result: result}, result.Error
|
return &GormResult{result: result}, result.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -488,6 +525,13 @@ func (g *GormDeleteQuery) Exec(ctx context.Context) (res common.Result, err erro
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
result := g.db.WithContext(ctx).Delete(g.model)
|
result := g.db.WithContext(ctx).Delete(g.model)
|
||||||
|
if result.Error != nil {
|
||||||
|
// Log SQL string for debugging
|
||||||
|
sqlStr := g.db.ToSQL(func(tx *gorm.DB) *gorm.DB {
|
||||||
|
return tx.Delete(g.model)
|
||||||
|
})
|
||||||
|
logger.Error("GormDeleteQuery.Exec failed. SQL: %s. Error: %v", sqlStr, result.Error)
|
||||||
|
}
|
||||||
return &GormResult{result: result}, result.Error
|
return &GormResult{result: result}, result.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user