summaryrefslogtreecommitdiff
path: root/vendor/github.com/go-pg/pg/extra/pgdebug/pgdebug.go
blob: bbf6ada19be4f4393c26729630f1242c53cc563b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
}