mirror of
https://github.com/therootcompany/golib.git
synced 2026-04-24 12:48:00 +00:00
Factor the inline migration logic from cmd/sql-migrate into reusable packages: database/sqlmigrate (core types, matching, file collection) and database/sqlmigrate/shmigrate (shell script generation backend). No behavior changes — the CLI produces identical output. The shmigrate package implements the sqlmigrate.Migrator interface so other backends (pgmigrate, mymigrate, etc.) can follow the same pattern.
23 lines
1.2 KiB
Markdown
23 lines
1.2 KiB
Markdown
# sqlmigrate
|
|
|
|
Database-agnostic SQL migration library for Go.
|
|
|
|
[](https://pkg.go.dev/github.com/therootcompany/golib/database/sqlmigrate)
|
|
|
|
## Backend packages
|
|
|
|
Each backend is a separate Go module to avoid pulling unnecessary drivers:
|
|
|
|
| Package | Database | Driver |
|
|
|---------|----------|--------|
|
|
| [pgmigrate](https://pkg.go.dev/github.com/therootcompany/golib/database/sqlmigrate/pgmigrate) | PostgreSQL | pgx/v5 |
|
|
| [mymigrate](https://pkg.go.dev/github.com/therootcompany/golib/database/sqlmigrate/mymigrate) | MySQL / MariaDB | go-sql-driver/mysql |
|
|
| [litemigrate](https://pkg.go.dev/github.com/therootcompany/golib/database/sqlmigrate/litemigrate) | SQLite | database/sql (caller imports driver) |
|
|
| [msmigrate](https://pkg.go.dev/github.com/therootcompany/golib/database/sqlmigrate/msmigrate) | SQL Server | go-mssqldb |
|
|
| [shmigrate](https://pkg.go.dev/github.com/therootcompany/golib/database/sqlmigrate/shmigrate) | Shell scripts | (generates POSIX sh) |
|
|
|
|
## CLI
|
|
|
|
The [sql-migrate](https://pkg.go.dev/github.com/therootcompany/golib/cmd/sql-migrate/v2) CLI
|
|
uses shmigrate to generate shell scripts for managing migrations without a Go dependency at runtime.
|