diff options
Diffstat (limited to 'database.go')
| -rw-r--r-- | database.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/database.go b/database.go new file mode 100644 index 0000000..c2d69c1 --- /dev/null +++ b/database.go @@ -0,0 +1,45 @@ +package main + +import ( + "embed" + "fmt" + "io/fs" + "log" + "path/filepath" +) + +const ( + migrationDir = `sql/migrations` + migrationFilePattern = `%04d.sqlite3` +) + +var migrations []string + +//go:embed sql/migrations/*.sqlite3 +var migrationsFS embed.FS + +func init() { + readMigrations() +} + +func readMigrations() { + i := 1 + + _ = fs.WalkDir(migrationsFS, migrationDir, func(path string, d fs.DirEntry, err error) error { + if !d.IsDir() { + expected := fmt.Sprintf(migrationFilePattern, i) + if filepath.Base(path) == expected { + data, err := fs.ReadFile(migrationsFS, path) + if err != nil { + log.Fatalf("Could not read migration: %v", err) + } + + migrations = append(migrations, string(data)) + + i += 1 + } + } + + return nil + }) +} |
