53 lines
1.1 KiB
Markdown
53 lines
1.1 KiB
Markdown
# Templating for Migration Sources
|
|
|
|
migrate-template a wrapper for migration sources of library [golang-migrate/migrate](https://github.com/golang-migrate/migrate) that allows the use of variables in migrations files.
|
|
|
|
|
|
|
|
## Use in your Go project
|
|
|
|
```go
|
|
|
|
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,
|
|
template.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:
|
|
```sql
|
|
|
|
CREATE TABLE table_name ON CLUSTER {{cluster}} (
|
|
foo Int64,
|
|
bar String
|
|
) ENGINE = ReplicatedReplacingMergeTree('{{replicated_path}}.table_name', '{replica}')
|
|
```
|
|
|
|
Result:
|
|
```sql
|
|
|
|
CREATE TABLE table_name ON CLUSTER cluster_name (
|
|
foo Int64,
|
|
bar String
|
|
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/db_name.table_name', '{replica}')
|
|
``` |