diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-12-22 18:34:02 +0100 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-12-22 18:34:02 +0100 |
| commit | cbd5c09c5e1403709d4aabf91051443f147689e5 (patch) | |
| tree | 5add0c1a15df56ec121a77f3d4bd895c7d5f19df /backend/db.go | |
| parent | 9bba6dcbb2e83fe53604d38b89fb79ce47eacddd (diff) | |
refactor(backend): move db related in new package
Diffstat (limited to 'backend/db.go')
| -rw-r--r-- | backend/db.go | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/backend/db.go b/backend/db.go deleted file mode 100644 index 3828880..0000000 --- a/backend/db.go +++ /dev/null @@ -1,68 +0,0 @@ -package backend - -import ( - "context" - "database/sql" - "embed" - "fmt" - "log/slog" - "regexp" - "slices" - "strconv" - - _ "github.com/mattn/go-sqlite3" -) - -//go:embed migrations -var migrations embed.FS - -var nameReg = regexp.MustCompile(`(\d{3})_[a-zA-Z_-]+.sql`) - -func ConnectDatabase(cfg *Config) *sql.DB { - db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?cache=shared", cfg.Database)) - if err != nil { - panic(err) - } - return db -} - -func RunMigration(ctx context.Context, db *sql.DB) error { - entries, err := migrations.ReadDir("migrations") - if err != nil { - return err - } - type runMig struct { - val string - n int - } - var toRun []runMig - for _, e := range entries { - rawId := nameReg.FindStringSubmatch(e.Name()) - id, err := strconv.Atoi(rawId[1]) - if err != nil { - return err - } - b, err := migrations.ReadFile("migrations/" + e.Name()) - if err != nil { - return err - } - slog.Debug("loading migration", "n", id, "file", e.Name(), "content", string(b)) - toRun = append(toRun, runMig{ - val: string(b), n: id, - }) - } - if len(toRun) == 0 { - return nil - } - slices.SortFunc(toRun, func(a, b runMig) int { - return a.n - b.n - }) - for _, m := range toRun { - slog.Info("migrating", "n", m.n) - _, err := db.ExecContext(ctx, m.val) - if err != nil { - return err - } - } - return nil -} |
