summaryrefslogtreecommitdiff
path: root/database.go
diff options
context:
space:
mode:
Diffstat (limited to 'database.go')
-rw-r--r--database.go45
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
+ })
+}