Documentation ¶
Overview ¶
Package sqltool contains logic to integrate existing tools like Flyway or Liquibase with the Atlas CLI.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // GolangMigrateFormatter returns migrate.Formatter compatible with golang-migrate/migrate. GolangMigrateFormatter = templateFormatter( "{{ now }}{{ with .Name }}_{{ . }}{{ end }}.up.sql", `{{ range .Changes }}{{ with .Comment }}-- {{ println . }}{{ end }}{{ printf "%s;\n" .Cmd }}{{ end }}`, "{{ now }}{{ with .Name }}_{{ . }}{{ end }}.down.sql", `{{ range $c := rev .Changes }}{{ with $stmts := .ReverseStmts }}{{ with $c.Comment }}-- reverse: {{ println . }}{{ end }}{{ range $stmts }}{{ printf "%s;\n" . }}{{ end }}{{ end }}{{ end }}`, ) // GooseFormatter returns migrate.Formatter compatible with pressly/goose. GooseFormatter = templateFormatter( "{{ now }}{{ with .Name }}_{{ . }}{{ end }}.sql", `-- +goose Up {{ range .Changes }}{{ with .Comment }}-- {{ println . }}{{ end }}{{ printf "%s;\n" .Cmd }}{{ end }} -- +goose Down {{ range $c := rev .Changes }}{{ with $stmts := .ReverseStmts }}{{ with $c.Comment }}-- reverse: {{ println . }}{{ end }}{{ range $stmts }}{{ printf "%s;\n" . }}{{ end }}{{ end }}{{ end }}`, ) // FlywayFormatter returns migrate.Formatter compatible with Flyway. FlywayFormatter = templateFormatter( "V{{ now }}{{ with .Name }}__{{ . }}{{ end }}.sql", `{{ range .Changes }}{{ with .Comment }}-- {{ println . }}{{ end }}{{ printf "%s;\n" .Cmd }}{{ end }}`, "U{{ now }}{{ with .Name }}__{{ . }}{{ end }}.sql", `{{ range $c := rev .Changes }}{{ with $stmts := .ReverseStmts }}{{ with $c.Comment }}-- reverse: {{ println . }}{{ end }}{{ range $stmts }}{{ printf "%s;\n" . }}{{ end }}{{ end }}{{ end }}`, ) // LiquibaseFormatter returns migrate.Formatter compatible with Liquibase. LiquibaseFormatter = templateFormatter( "{{ now }}{{ with .Name }}_{{ . }}{{ end }}.sql", `{{- $now := now -}} --liquibase formatted sql {{- range $index, $change := .Changes }} --changeset atlas:{{ $now }}-{{ inc $index }} {{ with $change.Comment }}--comment: {{ . }}{{ end }} {{ $change.Cmd }}; {{ with $stmts := .ReverseStmts }}{{ range $stmts }}{{ printf "--rollback: %s;\n" . }}{{ end }}{{ end }} {{- end }}`, ) // DBMateFormatter returns migrate.Formatter compatible with amacneil/dbmate. DBMateFormatter = templateFormatter( "{{ now }}{{ with .Name }}_{{ . }}{{ end }}.sql", `-- migrate:up {{ range .Changes }}{{ with .Comment }}-- {{ println . }}{{ end }}{{ printf "%s;\n" .Cmd }}{{ end }} -- migrate:down {{ range $c := rev .Changes }}{{ with $stmts := .ReverseStmts }}{{ with $c.Comment }}-- reverse: {{ println . }}{{ end }}{{ range $stmts }}{{ printf "%s;\n" . }}{{ end }}{{ end }}{{ end }}`, ) // DbmateFormatter is the same as DBMateFormatter. // Deprecated: Use DBMateFormatter instead. DbmateFormatter = DBMateFormatter )
Functions ¶
func SetRepeatableVersion ¶
SetRepeatableVersion iterates over the migration files and assigns repeatable migrations a version number since Atlas does not have the concept of repeatable migrations. Each repeatable migration file gets assigned the version of the preceding migration file (or 0) followed by an 'R'.
Types ¶
type DBMateDir ¶
DBMateDir wraps migrate.LocalDir and provides a migrate.Scanner implementation able to understand files generated by the DBMateFormatter for migration directory replaying.
func NewDBMateDir ¶
NewDBMateDir returns a new DBMateDir.
type DBMateFile ¶
DBMateFile wraps migrate.LocalFile with custom statements function.
func (*DBMateFile) StmtDecls ¶
func (f *DBMateFile) StmtDecls() ([]*migrate.Stmt, error)
StmtDecls understands the migration format used by amacneil/dbmate sql migration files.
func (*DBMateFile) Stmts ¶
func (f *DBMateFile) Stmts() ([]string, error)
Stmts understands the migration format used by amacneil/dbmate sql migration files.
type FlywayDir ¶
FlywayDir wraps fs.FS and provides a migrate.Scanner implementation able to understand files generated by the FlywayFormatter for migration directory replaying.
func NewFlywayDir ¶
NewFlywayDir returns a new FlywayDir.
func (*FlywayDir) Checksum ¶
Checksum implements Dir.Checksum. By default, it calls Files() and creates a checksum from them.
func (*FlywayDir) Files ¶
Files implements Scanner.Files. It looks for all files with .sql suffix. The given directory is recursively scanned for non-hidden subdirectories. All found files will be ordered by migration type (Baseline, Versioned, Repeatable) and filename.
type FlywayFile ¶
FlywayFile wraps migrate.LocalFile with custom statements function.
type GolangMigrateDir ¶
GolangMigrateDir wraps fs.FS and provides a migrate.Scanner implementation able to understand files generated by the GolangMigrateFormatter for migration directory replaying.
func NewGolangMigrateDir ¶
func NewGolangMigrateDir(path string) (*GolangMigrateDir, error)
NewGolangMigrateDir returns a new GolangMigrateDir.
func (*GolangMigrateDir) Checksum ¶
func (d *GolangMigrateDir) Checksum() (migrate.HashFile, error)
Checksum implements Dir.Checksum. By default, it calls Files() and creates a checksum from them.
func (*GolangMigrateDir) Files ¶
func (d *GolangMigrateDir) Files() ([]migrate.File, error)
Files implements Scanner.Files. It looks for all files with up.sql suffix and orders them by filename.
func (*GolangMigrateDir) Path ¶
func (d *GolangMigrateDir) Path() string
Path returns the local path used for opening this dir.
type GolangMigrateFile ¶
GolangMigrateFile wraps migrate.LocalFile with custom description function.
func (*GolangMigrateFile) Desc ¶
func (f *GolangMigrateFile) Desc() string
Desc implements File.Desc.
type GooseDir ¶
GooseDir wraps migrate.LocalDir and provides a migrate.Scanner implementation able to understand files generated by the GooseFormatter for migration directory replaying.
func NewGooseDir ¶
NewGooseDir returns a new GooseDir.
type GooseFile ¶
GooseFile wraps migrate.LocalFile with custom statements function.
type LiquibaseDir ¶
LiquibaseDir wraps migrate.LocalDir and provides a migrate.Scanner implementation able to understand files generated by the LiquibaseFormatter for migration directory replaying.
func NewLiquibaseDir ¶
func NewLiquibaseDir(path string) (*LiquibaseDir, error)
NewLiquibaseDir returns a new LiquibaseDir.