Add production features: slog adapter, scan helpers, slow query logging, pool stats, tracer passthrough, test tx isolation
Some checks failed
CI / test (push) Failing after 13s
Some checks failed
CI / test (push) Failing after 13s
- slog.go: SlogLogger adapts *slog.Logger to dbx.Logger interface - scan.go: Collect[T] and CollectOne[T] generic helpers using pgx.RowToStructByName - cluster.go: slow query logging via Config.SlowQueryThreshold (Warn level in queryEnd) - stats.go: PoolStats with Cluster.Stats() aggregating pool stats across all nodes - config.go/node.go: NodeConfig.Tracer passthrough for pgx.QueryTracer (OpenTelemetry) - options.go: WithSlowQueryThreshold and WithTracer functional options - dbxtest/tx.go: RunInTx runs callback in always-rolled-back transaction for test isolation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,12 @@ go vet ./... # static analysis
|
||||
- **Health checker** — background goroutine pings all nodes on an interval, flips `Node.healthy` atomic bool
|
||||
- **RunTx** — panic-safe transaction wrapper: recovers panics, rolls back, re-panics
|
||||
- **Querier injection** — `InjectQuerier`/`ExtractQuerier` pass `Querier` via context for service layers
|
||||
- **SlogLogger** — adapts `*slog.Logger` to the `dbx.Logger` interface (`slog.go`)
|
||||
- **Collect/CollectOne** — generic scan helpers using `pgx.RowToStructByName` (`scan.go`)
|
||||
- **Slow query logging** — `Config.SlowQueryThreshold` triggers Warn-level logging in `queryEnd`
|
||||
- **PoolStats** — `Cluster.Stats()` aggregates pool statistics across all nodes (`stats.go`)
|
||||
- **Tracer passthrough** — `NodeConfig.Tracer` / `WithTracer` sets `pgx.QueryTracer` for OpenTelemetry
|
||||
- **RunInTx** — test helper that runs a callback in an always-rolled-back transaction (`dbxtest/tx.go`)
|
||||
|
||||
### Error classification
|
||||
|
||||
@@ -40,6 +46,7 @@ go vet ./... # static analysis
|
||||
- `atomic.Bool` for thread safety (`Node.healthy`, `Cluster.closed`)
|
||||
- `dbxtest.NewTestCluster` skips tests when DB unreachable, auto-closes via `t.Cleanup`
|
||||
- `dbxtest.TestLogger` writes to `testing.T` for test log output
|
||||
- `dbxtest.RunInTx` runs a callback in a transaction that is always rolled back
|
||||
|
||||
## See also
|
||||
|
||||
|
||||
Reference in New Issue
Block a user