Files
job-search/internal/cli/migrate/migrate.go
T
bwilliams e19c8c2b69 Imports split into three groups: standard library, third-party, then this project's own packages
gci is configured with the sections standard, default and localmodule, and
goimports with the module path as its local prefix, so both formatters
agree.
2026-10-14 17:40:06 +01:00

44 lines
1.3 KiB
Go

// Package migrate provides the "migrate" command and its subcommands, which
// apply, roll back and report the store's migrations (goose, embedded in the
// store package) on the configured SQLite database.
//
// goose runs each migration in its own transaction, so a failed migration is
// rolled back and leaves the database at the previous version.
package migrate
import (
"log/slog"
"github.com/spf13/cobra"
"git.avsdev.uk/Go/job-search/internal/cli"
)
// NewCommand returns the "migrate" command, which migrates the database schema (see
// internal/store).
func NewCommand(opts *cli.Options) *cobra.Command {
cmd := &cobra.Command{
Use: "migrate",
Short: "Migrate SQLite database to latest version",
Long: `Migrate the SQLite database to the latest version.
Running without a subcommand is the same as running "migrate up": every pending
migration is applied.`,
Args: cobra.NoArgs,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
slog.Debug("migrate.PersistentPreRun")
},
PersistentPostRun: func(cmd *cobra.Command, args []string) {
slog.Debug("migrate.PersistentPostRun")
},
RunE: func(cmd *cobra.Command, args []string) error {
slog.Debug("migrate.Run")
return runStepUp(cmd, opts, 0, false)
},
}
cmd.AddCommand(commandUp(opts))
cmd.AddCommand(commandDown(opts))
cmd.AddCommand(commandStatus(opts))
return cmd
}