|  | ||
|---|---|---|
| README.md | ||
| go.mod | ||
| go.sum | ||
| template.go | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	Templating for Migration Sources
migrate-template a wrapper for migration sources of library golang-migrate/migrate that allows the use of variables in migrations files.
Use in your Go project
import (
	template "github.com/FindMyKids/migrate-template"
	"github.com/golang-migrate/migrate/v4"
	"github.com/golang-migrate/migrate/v4/source"
)
func main() {
	sourceInstance, err := source.Open("file://migration")
	
	templateInstance := template.Wrap(
		sourceInstance,
		migration.WithVars(template.M{
			"cluster": "cluster_name",
			"replicated_path": "/clickhouse/tables/db_name",
		}),
	)
	m, err := migrate.NewWithSourceInstance(
		"template", templateInstance,
		"clickhouse://...",
	)
	m.Steps(1)
}
Migration template using variables:
CREATE TABLE table_name ON CLUSTER {{cluster}} (
	foo Int64,
	bar String
) ENGINE = ReplicatedReplacingMergeTree('{{replicated_path}}.table_name', '{replica}')
Result:
CREATE TABLE table_name ON CLUSTER cluster_name (
	foo Int64,
	bar String
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/db_name.table_name', '{replica}')