mirror of https://github.com/dexidp/dex.git
Browse Source
When reading migrations from files, sql-migrate attempts to split SQL statements. The parsing logic does not handle $BODY$ statements and broke when the migration included one. Replace go-bindata with a small migration generation script and use in memory migrations instead.pull/339/head
3 changed files with 74 additions and 10 deletions
@ -0,0 +1,72 @@
|
||||
// +build ignore
|
||||
|
||||
package main |
||||
|
||||
import ( |
||||
"io/ioutil" |
||||
"log" |
||||
"os" |
||||
"path/filepath" |
||||
"sort" |
||||
"strconv" |
||||
"text/template" |
||||
) |
||||
|
||||
var funcs = template.FuncMap{ |
||||
"quote": strconv.Quote, |
||||
} |
||||
|
||||
var tmpl = template.Must(template.New("assets.go").Delims("{%", "%}").Funcs(funcs).Parse(`package migrations |
||||
|
||||
// THIS FILE WAS GENERATED BY gen.go DO NOT EDIT
|
||||
|
||||
import "github.com/rubenv/sql-migrate" |
||||
|
||||
var PostgresMigrations migrate.MigrationSource = &migrate.MemoryMigrationSource{ |
||||
Migrations: []*migrate.Migration{{% range $i, $m := . %} |
||||
{ |
||||
Id: {% $m.Name | quote %}, |
||||
Up: []string{ |
||||
{% $m.Data | quote %}, |
||||
}, |
||||
},{% end %} |
||||
}, |
||||
} |
||||
`)) |
||||
|
||||
// A single postgres migration.
|
||||
type migration struct { |
||||
Name string |
||||
Data string |
||||
} |
||||
|
||||
func init() { |
||||
log.SetPrefix("gen_assets: ") |
||||
log.SetFlags(0) |
||||
} |
||||
|
||||
func main() { |
||||
files, err := filepath.Glob("*.sql") |
||||
if err != nil { |
||||
log.Fatalf("finding sql files: %v", err) |
||||
} |
||||
|
||||
sort.Strings(files) |
||||
migrations := make([]migration, len(files)) |
||||
for i, f := range files { |
||||
data, err := ioutil.ReadFile(f) |
||||
if err != nil { |
||||
log.Fatalf("reading file: %v", err) |
||||
} |
||||
migrations[i] = migration{f, string(data)} |
||||
} |
||||
|
||||
f, err := os.OpenFile("assets.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) |
||||
if err != nil { |
||||
log.Fatalf("creating file: %v", err) |
||||
} |
||||
defer f.Close() |
||||
if err := tmpl.Execute(f, migrations); err != nil { |
||||
log.Fatal(err) |
||||
} |
||||
} |
||||
@ -1,6 +1,3 @@
|
||||
package migrations |
||||
|
||||
// To download go-bindata run `go get -u github.com/jteeuwen/go-bindata/...`
|
||||
|
||||
//go:generate go-bindata -modtime=1 -pkg migrations -o assets.go -ignore \.go$ -prefix "../.." ../../db/migrations
|
||||
//go:generate gofmt -w assets.go
|
||||
//go:generate go run gen_assets.go
|
||||
|
||||
Loading…
Reference in new issue