A Go project demonstrating SQLC for type-safe database operations with domain-driven design.
Note: This is a demo project inspired by sqlcpp.
This project shows how to build Go applications with:
- SQLC for database code generation
- PostgreSQL with pgx driver
- Domain-driven design patterns
- Repository pattern implementation
- Integration testing with Testcontainers
internal/
├── domain/ # Business models (Cart, Money)
├── port/ # Repository interfaces
├── repository/ # Repository implementations
├── db/ # Generated SQLC code
└── migrations/ # Database schema
internal/domain/cart.go- Main business entityinternal/port/cart_port.go- Repository interfaceinternal/repository/cart_repository.go- Database implementationinternal/db/queries/cart.sql- SQL queries for SQLCsqlc.yaml- SQLC configuration
Uses PostgreSQL with custom type mappings:
- UUID fields →
github.com/google/uuid - Decimal fields →
github.com/shopspring/decimal - Timestamps →
time.Time
Integration tests use Testcontainers with real PostgreSQL instances. Tests automatically set up database schema and run migrations.
- Define domain models in
internal/domain/ - Add SQL migrations in
internal/migrations/ - Write SQL queries in
internal/db/queries/ - Use Claude Code's
/generate-repository cartcommand to auto-generate repository and tests for the cart domain