package db import ( "context" "fmt" "github.com/jackc/pgx/v5/pgxpool" ) func WithTx(ctx context.Context, pool *pgxpool.Pool, fn func(ctx context.Context) error) error { tx, err := pool.Begin(ctx) if err != nil { return fmt.Errorf("begin tx: %w", err) } defer tx.Rollback(ctx) if err := fn(ctx); err != nil { return err } if err := tx.Commit(ctx); err != nil { return fmt.Errorf("commit tx: %w", err) } return nil }