use embed for migrations
This commit is contained in:
@@ -2,13 +2,16 @@ package migrate
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"embed"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
//go:embed migrations/*.sql
|
||||
var migrations embed.FS
|
||||
|
||||
type Migration struct {
|
||||
Version int
|
||||
Name string
|
||||
@@ -26,7 +29,7 @@ func Migrate(db *sql.DB) {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
files, err := os.ReadDir("./migrations")
|
||||
files, err := migrations.ReadDir("migrations")
|
||||
if err != nil {
|
||||
log.Fatal("Failed to read migrations directory")
|
||||
}
|
||||
@@ -38,7 +41,7 @@ func Migrate(db *sql.DB) {
|
||||
err = row.Scan(&migration.Version, &migration.Name)
|
||||
if err == sql.ErrNoRows {
|
||||
fmt.Printf("Running migration: %s\n", file.Name())
|
||||
migrationSql, err := os.ReadFile(fmt.Sprintf("./migrations/%s", file.Name()))
|
||||
migrationSql, err := migrations.ReadFile(fmt.Sprintf("migrations/%s", file.Name()))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
5
internal/migrate/migrations/1-init_db.sql
Normal file
5
internal/migrate/migrations/1-init_db.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
CREATE TABLE todo(
|
||||
id INTEGER PRIMARY KEY,
|
||||
name VARCHAR(50),
|
||||
done INTEGER
|
||||
);
|
||||
Reference in New Issue
Block a user