package group import ( "context" "fmt" "git.zervo.org/zervo/worktime/internal/database" "git.zervo.org/zervo/worktime/internal/database/models" "github.com/spf13/cobra" "gorm.io/gorm" ) var addCmd = &cobra.Command{ Use: "add [flags] (name) [description]", Short: "Add a group", Long: `Create a new locally stored project group`, Args: cobra.MatchAll(cobra.MinimumNArgs(1), cobra.MaximumNArgs(2)), RunE: addExecute, } func addExecute(cmd *cobra.Command, args []string) error { name := args[0] desc := "" if len(args) > 1 { desc = args[1] } if len(name) > 255 { return fmt.Errorf("given name is too long (%d): maximum allowed length is 255", len(name)) } db := database.DB() ctx := context.Background() _, err := gorm.G[models.ProjectGroup](db).Where("name = ?", name).First(ctx) if err != gorm.ErrRecordNotFound { return fmt.Errorf("group with this name already exists") } group := models.ProjectGroup{ Name: name, Description: desc, } err = gorm.G[models.ProjectGroup](db).Create(ctx, &group) if err != nil { return fmt.Errorf("could not add group: %v", err) } return nil }