> golang-database

Standards for database interaction, connection pooling, and repository patterns in Golang. Use when implementing database access, connection pools, or repositories in Go. (triggers: internal/adapter/repository/**, database, sql, postgres, gorm, sqlc, pgx)

fetch
$curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/golang-database?format=md"
SKILL.mdgolang-database

Golang Database Standards

Priority: P0 (CRITICAL)

Principles

  • Prefer Raw SQL/Builders over ORMs: Go structs map well to SQL. ORMs (GORM) can obscure performance. Recommended: sqlc (type-safe SQL generation).
  • Repository Pattern: Abstract DB access behind interfaces in internal/port/ (e.g., UserRepository).
  • Connection Pooling: Always configure SetMaxOpenConns, SetMaxIdleConns, SetConnMaxLifetime.
  • Transactions: Logic requiring ACID MUST use transactions. Pass context.Context everywhere.

Drivers

  • PostgreSQL: jackc/pgx (Prefer pgx/v5 for performance and features).
  • MySQL: go-sql-driver/mysql.
  • SQLite: mattn/go-sqlite3 or modernc.org/sqlite (pure Go).

Anti-Patterns

  • Global DB Connection: Do not use global var db *sql.DB. Inject it.
  • Ignoring Context: Always use db.QueryContext or db.ExecContext to handle timeouts.
  • Leaking Rows: ALWAYS defer rows.Close() and check rows.Err().

References

┌ stats

installs/wk0
░░░░░░░░░░
github stars341
██████████
first seenMar 17, 2026
└────────────

┌ repo

HoangNguyen0403/agent-skills-standard
by HoangNguyen0403
└────────────

┌ tags

└────────────