diff --git a/cmd/database/database_credential.go b/cmd/database/database_credential.go index 61205f47..5d7535c2 100644 --- a/cmd/database/database_credential.go +++ b/cmd/database/database_credential.go @@ -41,40 +41,49 @@ var dbCredentialCmd = &cobra.Command{ os.Exit(1) } + connStr := strings.ToLower(db.Software) + "://" + db.DatabaseUserInfo[0].Username + ":" + db.DatabaseUserInfo[0].Password + "@" + db.PublicIPv4 + ":" + fmt.Sprintf("%d", db.DatabaseUserInfo[0].Port) + + if connectionString { + for _, user := range db.DatabaseUserInfo { + fmt.Printf("%s://%s:%s@%s:%d\n", strings.ToLower(db.Software), user.Username, user.Password, db.PublicIPv4, user.Port) + } + return + } ow := utility.NewOutputWriter() + ow.StartLine() - if !connectionString { - for _, userInfo := range db.DatabaseUserInfo { + ow.AppendDataWithLabel("id", utility.TrimID(db.ID), "ID") + ow.AppendDataWithLabel("name", db.Name, "Name") + ow.AppendDataWithLabel("host", db.PublicIPv4, "Host") + ow.AppendDataWithLabel("connection-string", connStr, "Connection String") - ow.StartLine() - fmt.Println() - ow.AppendDataWithLabel("database_id", utility.TrimID(db.ID), "Database ID") - ow.AppendDataWithLabel("name", db.Name, "Name") - ow.AppendDataWithLabel("host", db.PublicIPv4, "Host") + // Show credentials for each user + for i, userInfo := range db.DatabaseUserInfo { + if i == 0 { + // For the first user, show credentials directly ow.AppendDataWithLabel("port", fmt.Sprintf("%d", userInfo.Port), "Port") ow.AppendDataWithLabel("username", userInfo.Username, "Username") ow.AppendDataWithLabel("password", userInfo.Password, "Password") + } else { + // For additional users, add a numbered suffix + ow.AppendDataWithLabel(fmt.Sprintf("port_%d", i+1), fmt.Sprintf("%d", userInfo.Port), fmt.Sprintf("Port %d", i+1)) + ow.AppendDataWithLabel(fmt.Sprintf("username_%d", i+1), userInfo.Username, fmt.Sprintf("Username %d", i+1)) + ow.AppendDataWithLabel(fmt.Sprintf("password_%d", i+1), userInfo.Password, fmt.Sprintf("Password %d", i+1)) + } + } - if common.OutputFormat == "json" || common.OutputFormat == "custom" { - ow.AppendDataWithLabel("firewall_id", db.FirewallID, "Firewall ID") - ow.AppendDataWithLabel("network_id", db.NetworkID, "Network ID") - ow.AppendDataWithLabel("database_id", db.ID, "Database ID") + if common.OutputFormat == "json" || common.OutputFormat == "custom" { + ow.AppendDataWithLabel("firewall_id", db.FirewallID, "Firewall ID") + ow.AppendDataWithLabel("network_id", db.NetworkID, "Network ID") + ow.AppendDataWithLabel("database_id", db.ID, "Database ID") - } + if common.OutputFormat == "json" { + ow.WriteSingleObjectJSON(common.PrettySet) + } else { + ow.WriteCustomOutput(common.OutputFields) } } else { - for _, user := range db.DatabaseUserInfo { - fmt.Printf("%s://%s:%s@%s:%d\n", strings.ToLower(db.Software), user.Username, user.Password, db.PublicIPv4, user.Port) - } - } - - switch common.OutputFormat { - case "json": - ow.WriteMultipleObjectsJSON(common.PrettySet) - case "custom": - ow.WriteCustomOutput(common.OutputFields) - default: - ow.WriteTable() + ow.WriteKeyValues() } }, }