From f1741a7faa9538e9b12ac60e0fbf6c7721a36059 Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Tue, 9 Sep 2025 22:44:09 +0100 Subject: Initial commit --- pkg/database/database.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 pkg/database/database.go (limited to 'pkg/database/database.go') diff --git a/pkg/database/database.go b/pkg/database/database.go new file mode 100644 index 0000000..b236d2d --- /dev/null +++ b/pkg/database/database.go @@ -0,0 +1,31 @@ +package database + +import ( + "database/sql" + "embed" + "fmt" + + _ "github.com/mattn/go-sqlite3" + "github.com/pressly/goose/v3" +) + +//go:embed migrations/*.sql +var embedMigrations embed.FS + +func Connect(path string) (*sql.DB, error) { + return sql.Open("sqlite3", path+"?_foreign_keys=on") +} + +func Migrate(db *sql.DB) error { + goose.SetBaseFS(embedMigrations) + + if err := goose.SetDialect("sqlite3"); err != nil { + return fmt.Errorf("could not set dialect: %w", err) + } + + if err := goose.Up(db, "migrations"); err != nil { + return fmt.Errorf("could not apply migrations: %w", err) + } + + return nil +} -- cgit v1.2.3-70-g09d2