feat: versioned migrations (#26)

* enable atlas migrations

* use embedded atlas migrations

* chores

* bad migration example

* tidy

* fix linter issues

* reset migration state

* sort slice before testing

* move temp write logic to migrations package
This commit is contained in:
Hayden 2022-09-27 20:26:44 -08:00 committed by GitHub
parent 343290a55a
commit 8ba954674e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 255 additions and 30 deletions

View file

@ -0,0 +1,44 @@
package migrations
import (
"embed"
"os"
"path/filepath"
)
// go:embed all:migrations
var Files embed.FS
// Write writes the embedded migrations to a temporary directory.
// It returns an error and a cleanup function. The cleanup function
// should be called when the migrations are no longer needed.
func Write(temp string) error {
err := os.MkdirAll(temp, 0755)
if err != nil {
return err
}
fsDir, err := Files.ReadDir(".")
if err != nil {
return err
}
for _, f := range fsDir {
if f.IsDir() {
continue
}
b, err := Files.ReadFile(filepath.Join("migrations", f.Name()))
if err != nil {
return err
}
err = os.WriteFile(filepath.Join(temp, f.Name()), b, 0644)
if err != nil {
return err
}
}
return nil
}