diff --git a/cmd/create.go b/cmd/create.go index d285594..6b059b6 100644 --- a/cmd/create.go +++ b/cmd/create.go @@ -2,6 +2,7 @@ package cmd import ( "envy/cmd/utils" + "errors" "fmt" "os" "path" @@ -42,12 +43,23 @@ var createCmd = &cobra.Command{ environment := "" + envs, err := utils.GetEnvironments(dbProject.ID) + utils.StopIfErr(err) + form := huh.NewForm( huh.NewGroup( huh.NewInput(). Title("Environment name"). Prompt("? "). Validate(utils.NoSpace). + Validate(func(input string) error { + for _, en := range envs { + if en.Name == input { + return errors.New("this name is used") + } + } + return nil + }). Value(&environment), ), ) @@ -86,6 +98,9 @@ var createCmd = &cobra.Command{ return } + dbProjects, err := utils.GetProjects() + utils.StopIfErr(err) + project := "" environment := "" @@ -95,6 +110,14 @@ var createCmd = &cobra.Command{ Title("Project name"). Prompt("? "). Validate(utils.NoSpace). + Validate(func(input string) error { + for _, pr := range dbProjects { + if pr.Name == input { + return errors.New("this name is used") + } + } + return nil + }). Value(&project), huh.NewInput(). @@ -105,7 +128,7 @@ var createCmd = &cobra.Command{ ), ) - err := form.Run() + err = form.Run() if err != nil { utils.ErrPrint("Some error occured:", err.Error()) } diff --git a/cmd/utils/db.go b/cmd/utils/db.go index a79590e..653b88e 100644 --- a/cmd/utils/db.go +++ b/cmd/utils/db.go @@ -42,11 +42,11 @@ func MigrateDb() { } } -func GetProjects(name string) ([]Project, error) { +func GetProjects() ([]Project, error) { InitDb() var dbProjects []Project - result := DB.Where("name = ?", name).Find(&dbProjects) + result := DB.Find(&dbProjects) if result.Error != nil { return nil, errors.New("Some error occured: " + result.Error.Error())