Files
warmbly/internal/infrastructure/db/error.go
T
2026-01-17 14:11:14 +00:00

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
})
}