API Reference
This section documents pgtofu’s internal Go packages. While pgtofu is primarily used as a CLI tool, understanding the internal APIs is useful for contributors and for embedding pgtofu in other applications.Package Structure
Packages under
internal/ cannot be imported by external code per Go’s visibility rules. The pkg/ packages are designed for external use.Core Packages
schema
Core data models representing database objects. JSON-serializable structures for tables, columns, constraints, views, functions, and TimescaleDB objects.
extractor
Database schema extraction. Queries PostgreSQL system catalogs to build schema representations.
parser
SQL parsing. Converts CREATE statements into schema objects.
differ
Schema comparison. Detects differences between schemas and classifies changes.
generator
DDL generation. Converts detected changes into SQL migration statements.
Package Dependencies
Common Patterns
Creating a Schema from Database
Parsing SQL Files
Comparing Schemas
Generating Migrations
Error Handling
All packages follow consistent error handling:Thread Safety
schema.*types are not thread-safe; don’t share between goroutinesextractor.Extractoruses a single database connectionparser.Parsercan parse files concurrentlydiffer.Differis stateless and safe for concurrent usegenerator.Generatoris stateless and safe for concurrent use
Version Compatibility
The internal API may change between minor versions. For stable integration:- Pin to specific pgtofu versions
- Use the CLI for automation
- Only use
pkg/packages for embedding
See Also
- Architecture - Internal design documentation
- Contributing - How to contribute