From 1c0e673f75ee69cc95a3a83f599deaf7152008e4 Mon Sep 17 00:00:00 2001 From: Uzair Ali <72073401+uzaxirr@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:41:09 +0530 Subject: [PATCH] wait for db to be ready before showing creds --- cmd/database/database_credential.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/cmd/database/database_credential.go b/cmd/database/database_credential.go index 5d7535c..a5c7676 100644 --- a/cmd/database/database_credential.go +++ b/cmd/database/database_credential.go @@ -4,6 +4,9 @@ import ( "fmt" "os" "strings" + "time" + + "github.com/briandowns/spinner" "github.com/civo/cli/common" "github.com/civo/cli/config" @@ -41,6 +44,26 @@ var dbCredentialCmd = &cobra.Command{ os.Exit(1) } + // Add check for database status + if db.Status == "Pending" { + fmt.Printf("The DB %s is currently being provisioned, please wait...\n", utility.Green(db.Name)) + + s := spinner.New(spinner.CharSets[9], 100*time.Millisecond) + s.Writer = os.Stderr + s.Prefix = fmt.Sprintf("Waiting for database (%s)... ", db.Name) + s.Start() + + for db.Status == "Pending" { + db, err = client.FindDatabase(args[0]) + if err != nil { + utility.Error("%s", err) + os.Exit(1) + } + time.Sleep(2 * time.Second) + } + s.Stop() + } + connStr := strings.ToLower(db.Software) + "://" + db.DatabaseUserInfo[0].Username + ":" + db.DatabaseUserInfo[0].Password + "@" + db.PublicIPv4 + ":" + fmt.Sprintf("%d", db.DatabaseUserInfo[0].Port) if connectionString {