package script import ( "log" "os" "strings" "github.com/Caknoooo/go-gin-clean-starter/database" "github.com/Caknoooo/go-gin-clean-starter/pkg/constants" "github.com/samber/do" "gorm.io/gorm" ) func Commands(injector *do.Injector) bool { db := do.MustInvokeNamed[*gorm.DB](injector, constants.DB) var scriptName string migrate := false seed := false run := false scriptFlag := false fresh := false for _, arg := range os.Args[1:] { if arg == "--migrate" { migrate = true } if arg == "--seed" { seed = true } if arg == "--run" { run = true } if arg == "--fresh" { fresh = true } if strings.HasPrefix(arg, "--script:") { scriptFlag = true scriptName = strings.TrimPrefix(arg, "--script:") } } if fresh { if err := database.MigrateFresh(db); err != nil { log.Fatalf("error migrate fresh: %v", err) } log.Println("fresh migration completed successfully") } else if migrate { if err := database.Migrate(db); err != nil { log.Fatalf("error migration: %v", err) } log.Println("migration completed successfully") } if seed { if err := database.Seeder(db); err != nil { log.Fatalf("error migration seeder: %v", err) } log.Println("seeder completed successfully") } if scriptFlag { if err := Script(scriptName, db); err != nil { log.Fatalf("error script: %v", err) } log.Println("script run successfully") } if run { return true } return false }