pgxext

pgxext is a comprehensive collection of PostgreSQL extensions for the pgx v5 driver, designed to simplify database operations, cluster management, and testing workflows.
Features
- Cluster Management: Primary-replica topology with automatic read/write routing
- Enhanced Querying: Simplified scanning with struct binding support
- Transaction Management: Advanced transaction handling with timeout controls
- Testing Utilities: Transaction-based testing for isolated test environments
Installation
go get github.com/MrEhbr/pgxext/v2
Architecture
pgxext is organized into three main packages:
- cluster/ - Primary-replica database abstraction
- conn/ - Enhanced querying & transactions
- txdb/ - Testing utilities
Packages
cluster - Primary-Replica Database Management
Abstracts primary-replica physical database topologies as a single logical database. Automatically routes reads to replicas and writes to primary with round-robin load balancing.
conn - Enhanced Database Querying
Simplifies querying and scanning with automatic struct binding, transaction context management, and configurable timeouts.
txdb - Transaction-Based Testing
Single transaction-based database wrapper for fast, isolated functional tests without database reloads.
Quick Start
See the examples/ directory for complete working examples:
Testing
Running Tests
# Set up test database
export PGXEXT_TEST_DATABASE_DSN="postgres://user:password@localhost:5432/testdb"
# Run tests with coverage
just test
# Start development database
just dev
Integration Tests
Tests require a PostgreSQL database. If PGXEXT_TEST_DATABASE_DSN is not set, integration tests are automatically skipped.
Development Commands
This project uses Just as a command runner:
just test - Run tests with race detection and coverage
just lint - Run golangci-lint with comprehensive rules
just fmt - Format code using golines and gofumpt
just dev - Start development database
Contributing
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Run
just lint and just test
- Submit a pull request
License
© 2025 Alexey Burmistrov
Licensed under the Apache License, Version 2.0 (LICENSE). See the COPYRIGHT file for more details.
SPDX-License-Identifier: Apache-2.0