mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 08:01:16 +00:00
28 lines
783 B
Go
28 lines
783 B
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/getsentry/sentry-go"
|
|
"github.com/jackc/pgx/v5/pgconn"
|
|
)
|
|
|
|
func CaptureError(err error, query string, params []any, operation string) {
|
|
if err == nil {
|
|
return
|
|
}
|
|
wrappedErr := fmt.Errorf("%s failed: %w (query: %s, params: %v)", operation, err, query, params)
|
|
sentry.CaptureException(wrappedErr)
|
|
sentry.WithScope(func(scope *sentry.Scope) {
|
|
scope.SetTag("db.operation", operation)
|
|
scope.SetTag("db.query", query) // Sanitize sensitive params in prod
|
|
if pgErr, ok := err.(*pgconn.PgError); ok {
|
|
scope.SetExtra("pg.code", pgErr.Code) // e.g., "23505" for unique violation
|
|
scope.SetExtra("pg.detail", pgErr.Detail)
|
|
scope.SetExtra("pg.hint", pgErr.Hint)
|
|
}
|
|
|
|
scope.SetExtra("db.params", params) // Redact if sensitive
|
|
})
|
|
}
|