From c12327e44d3187602128206786ca136116138a1d Mon Sep 17 00:00:00 2001 From: Jeff Haynie Date: Thu, 24 Apr 2025 12:09:15 -0500 Subject: [PATCH] Project Name uniqueness check should be within project not any project in the users org --- cmd/cloud.go | 2 +- cmd/project.go | 8 ++++---- internal/project/project.go | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/cloud.go b/cmd/cloud.go index b9690c0c..c8fb650e 100644 --- a/cmd/cloud.go +++ b/cmd/cloud.go @@ -90,7 +90,7 @@ func ShowNewProjectImport(ctx context.Context, logger logger.Logger, cmd *cobra. tui.WaitForAnyKey() tui.ClearScreen() orgId := promptForOrganization(ctx, logger, cmd, apiUrl, apikey) - name, description := promptForProjectDetail(ctx, logger, apiUrl, apikey, project.Name, project.Description) + name, description := promptForProjectDetail(ctx, logger, apiUrl, apikey, project.Name, project.Description, orgId) project.Name = name project.Description = description var createWebhookAuth bool diff --git a/cmd/project.go b/cmd/project.go index 2f6c3627..f60d3e09 100644 --- a/cmd/project.go +++ b/cmd/project.go @@ -131,10 +131,10 @@ func initProject(ctx context.Context, logger logger.Logger, args InitProjectArgs return result } -func promptForProjectDetail(ctx context.Context, logger logger.Logger, apiUrl, apikey string, name string, description string) (string, string) { +func promptForProjectDetail(ctx context.Context, logger logger.Logger, apiUrl, apikey string, name string, description string, orgId string) (string, string) { var nameOK bool if name != "" { - if exists, err := project.ProjectWithNameExists(ctx, logger, apiUrl, apikey, name); err != nil { + if exists, err := project.ProjectWithNameExists(ctx, logger, apiUrl, apikey, orgId, name); err != nil { errsystem.New(errsystem.ErrApiRequest, err, errsystem.WithContextMessage("Failed to check if project name exists")).ShowErrorAndExit() } else if exists { tui.ShowWarning("project %s already exists in this organization. please choose another name", name) @@ -151,7 +151,7 @@ func promptForProjectDetail(ctx context.Context, logger logger.Logger, apiUrl, a } } } - if exists, err := project.ProjectWithNameExists(ctx, logger, apiUrl, apikey, name); err != nil { + if exists, err := project.ProjectWithNameExists(ctx, logger, apiUrl, apikey, orgId, name); err != nil { errsystem.New(errsystem.ErrApiRequest, err, errsystem.WithContextMessage("Failed to check if project name exists")).ShowErrorAndExit() } else if exists { return fmt.Errorf("project %s already exists in this organization. please choose another name", name) @@ -402,7 +402,7 @@ Examples: } } } - exists, err := project.ProjectWithNameExists(ctx, logger, apiUrl, apikey, name) + exists, err := project.ProjectWithNameExists(ctx, logger, apiUrl, apikey, orgId, name) if err != nil { return false, err } diff --git a/internal/project/project.go b/internal/project/project.go index 45c901e1..d9b8ec9c 100644 --- a/internal/project/project.go +++ b/internal/project/project.go @@ -257,11 +257,11 @@ type Response[T any] struct { type ProjectResponse = Response[ProjectData] -func ProjectWithNameExists(ctx context.Context, logger logger.Logger, baseUrl string, token string, name string) (bool, error) { +func ProjectWithNameExists(ctx context.Context, logger logger.Logger, baseUrl string, token string, orgId string, name string) (bool, error) { client := util.NewAPIClient(ctx, logger, baseUrl, token) var resp Response[bool] - if err := client.Do("GET", fmt.Sprintf("/cli/project/exists/%s", url.PathEscape(name)), nil, &resp); err != nil { + if err := client.Do("GET", fmt.Sprintf("/cli/project/exists/%s?orgId=%s", url.PathEscape(name), url.PathEscape(orgId)), nil, &resp); err != nil { var apiErr *util.APIError if errors.As(err, &apiErr) { if apiErr.Status == http.StatusConflict {