gotosocial/vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go
Tobi Smethurst 98263a7de6
Grand test fixup (#138)
* start fixing up tests

* fix up tests + automate with drone

* fiddle with linting

* messing about with drone.yml

* some more fiddling

* hmmm

* add cache

* add vendor directory

* verbose

* ci updates

* update some little things

* update sig
2021-08-12 21:03:24 +02:00

43 lines
841 B
Go

package pgdebug
import (
"context"
"fmt"
"github.com/go-pg/pg/v10"
)
// DebugHook is a query hook that logs an error with a query if there are any.
// It can be installed with:
//
// db.AddQueryHook(pgext.DebugHook{})
type DebugHook struct {
// Verbose causes hook to print all queries (even those without an error).
Verbose bool
EmptyLine bool
}
var _ pg.QueryHook = (*DebugHook)(nil)
func (h DebugHook) BeforeQuery(ctx context.Context, evt *pg.QueryEvent) (context.Context, error) {
q, err := evt.FormattedQuery()
if err != nil {
return nil, err
}
if evt.Err != nil {
fmt.Printf("%s executing a query:\n%s\n", evt.Err, q)
} else if h.Verbose {
if h.EmptyLine {
fmt.Println()
}
fmt.Println(string(q))
}
return ctx, nil
}
func (DebugHook) AfterQuery(context.Context, *pg.QueryEvent) error {
return nil
}