From 6c8beb133073ebb3b6d8bb16e852b29dbc23f133 Mon Sep 17 00:00:00 2001 From: sinner Date: Wed, 8 Apr 2026 13:47:51 -0400 Subject: feat: add admin edit command for updating account properties --- cmd/admin.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) (limited to 'cmd/admin.go') diff --git a/cmd/admin.go b/cmd/admin.go index 5ef98ca..d4ab1e9 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -63,6 +63,13 @@ var adminStatsCmd = &cobra.Command{ RunE: runAdminStats, } +var adminEditCmd = &cobra.Command{ + Use: "edit [api_key]", + Short: "Edit account properties", + Args: cobra.ExactArgs(1), + RunE: runAdminEdit, +} + func init() { rootCmd.AddCommand(adminCmd) adminCmd.AddCommand(adminListCmd) @@ -72,11 +79,21 @@ func init() { adminCmd.AddCommand(adminSetCreditsCmd) adminCmd.AddCommand(adminDisableCmd) adminCmd.AddCommand(adminStatsCmd) + adminCmd.AddCommand(adminEditCmd) adminCreateCmd.Flags().IntP("credits", "c", 0, "Initial credits") adminCreateCmd.Flags().BoolP("unlimited", "u", false, "Unlimited credits") adminCreateCmd.Flags().BoolP("premium", "p", false, "Premium account (enables skiptrace access)") adminDisableCmd.Flags().BoolP("enable", "e", false, "Enable account instead of disable") + + adminEditCmd.Flags().StringP("name", "n", "", "Update account name") + adminEditCmd.Flags().IntP("credits", "c", -1, "Set credits amount") + adminEditCmd.Flags().BoolP("unlimited", "u", false, "Set unlimited credits") + adminEditCmd.Flags().BoolP("no-unlimited", "", false, "Remove unlimited credits") + adminEditCmd.Flags().BoolP("premium", "p", false, "Set premium account") + adminEditCmd.Flags().BoolP("no-premium", "", false, "Remove premium account") + adminEditCmd.Flags().BoolP("disable", "d", false, "Disable account") + adminEditCmd.Flags().BoolP("enable", "e", false, "Enable account") } func getAdminClient(cmd *cobra.Command) (*client.Client, error) { @@ -272,3 +289,75 @@ func runAdminStats(cmd *cobra.Command, args []string) error { printOutput(output) return nil } + +func runAdminEdit(cmd *cobra.Command, args []string) error { + c, err := getAdminClient(cmd) + if err != nil { + return err + } + + req := &models.AccountUpdateRequest{} + + name, _ := cmd.Flags().GetString("name") + if name != "" { + req.Name = &name + } + + credits, _ := cmd.Flags().GetInt("credits") + if credits >= 0 { + req.Credits = &credits + } + + unlimited, _ := cmd.Flags().GetBool("unlimited") + if unlimited { + req.Unlimited = &unlimited + } + + noUnlimited, _ := cmd.Flags().GetBool("no-unlimited") + if noUnlimited { + req.Unlimited = &noUnlimited + } + + premium, _ := cmd.Flags().GetBool("premium") + if premium { + req.IsPremium = &premium + } + + noPremium, _ := cmd.Flags().GetBool("no-premium") + if noPremium { + req.IsPremium = &noPremium + } + + disable, _ := cmd.Flags().GetBool("disable") + if disable { + req.Disabled = &disable + } + + enable, _ := cmd.Flags().GetBool("enable") + if enable { + falseVal := false + req.Disabled = &falseVal + } + + if req.Name == nil && req.Credits == nil && req.Unlimited == nil && + req.IsPremium == nil && req.Disabled == nil { + return fmt.Errorf("no changes specified — use --name, --credits, --unlimited, --no-unlimited, --premium, --no-premium, --disable, or --enable") + } + + response, err := c.UpdateAccount(args[0], req) + if err != nil { + return err + } + + if err := checkError(response.Error); err != nil { + return err + } + + output, err := formatter.FormatAccountUpdated(response.Account, response.Message, IsJSONOutput()) + if err != nil { + return err + } + + printOutput(output) + return nil +} -- cgit v1.2.3