diff options
Diffstat (limited to 'vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go')
-rw-r--r-- | vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go b/vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go new file mode 100644 index 000000000..bbf6ada19 --- /dev/null +++ b/vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go @@ -0,0 +1,42 @@ +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 +} |