migrate.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Author: simon (ynwdlxm@163.com)
  2. // Date: 2025/5/28 16:26
  3. // Desc:
  4. package cmd
  5. import (
  6. "github.com/spf13/cobra"
  7. "github.com/runningwater/gohub/database/migrations"
  8. "github.com/runningwater/gohub/pkg/migrate"
  9. )
  10. var CmdMigrate = &cobra.Command{
  11. Use: "migrate",
  12. Short: "Run database migrations",
  13. }
  14. var CmdMigrateUp = &cobra.Command{
  15. Use: "up",
  16. Short: "Run up migrations",
  17. Run: runUp,
  18. }
  19. var CmdMigrateRollback = &cobra.Command{
  20. Use: "down",
  21. Aliases: []string{"rollback"},
  22. Short: "Run rollback migrations",
  23. Run: runDown,
  24. }
  25. var CmdMigrateReset = &cobra.Command{
  26. Use: "reset",
  27. Short: "Reset and re-run all migrations",
  28. Run: func(cmd *cobra.Command, args []string) {
  29. migrator().Reset()
  30. },
  31. }
  32. var CmdMigrateRefresh = &cobra.Command{
  33. Use: "refresh",
  34. Short: "Drop all tables and re-run all migrations",
  35. Run: func(cmd *cobra.Command, args []string) {
  36. migrator().Refresh()
  37. },
  38. }
  39. var CmdMigrateFresh = &cobra.Command{
  40. Use: "fresh",
  41. Short: "Drop all tables and re-run all migrations",
  42. Run: func(cmd *cobra.Command, args []string) {
  43. migrator().Fresh()
  44. },
  45. }
  46. // 初始化命令
  47. func init() {
  48. CmdMigrate.AddCommand(
  49. CmdMigrateUp,
  50. CmdMigrateRollback,
  51. CmdMigrateReset,
  52. CmdMigrateRefresh,
  53. CmdMigrateFresh,
  54. )
  55. }
  56. func runUp(cmd *cobra.Command, args []string) {
  57. migrator().Up()
  58. }
  59. func runDown(cmd *cobra.Command, args []string) {
  60. migrator().Rollback()
  61. }
  62. func migrator() *migrate.Migrator {
  63. // 注册 database/migrations 目录下的所有迁移文件
  64. migrations.Initialize()
  65. return migrate.NewMigrator()
  66. }