76 lines
1.4 KiB
Go
76 lines
1.4 KiB
Go
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
|
|
}
|