github.com/monkeswag33/noter-go@v0.0.0-20220505233910-9d72ccb0bdb6/cmd/delete/user.go (about) 1 package delete 2 3 import ( 4 "fmt" 5 6 "github.com/manifoldco/promptui" 7 "github.com/monkeswag33/noter-go/db" 8 "github.com/monkeswag33/noter-go/errordef" 9 "github.com/monkeswag33/noter-go/prompt" 10 "github.com/sirupsen/logrus" 11 "github.com/spf13/cobra" 12 ) 13 14 var userCmd = &cobra.Command{ 15 Use: "user <username>", 16 Short: "Delete a user", 17 Long: "Delete a specific user by username as the first", 18 Run: func(cmd *cobra.Command, args []string) { 19 database = db.Database 20 var username string 21 if len(args) == 1 { 22 logrus.Debug("Username recognized as argument, using it") 23 username = args[0] 24 if err := deleteUserValidateUsername(username); err != nil { 25 logrus.Fatal(err) 26 } 27 } else { 28 logrus.Debug("Username not found, prompting") 29 username = prompt.Prompt(promptui.Prompt{ 30 Label: "Username:", 31 }, deleteUserValidateUsername) 32 } 33 logrus.Debug("Username passed validation") 34 if err := database.DeleteUser(db.User{ 35 Username: username, 36 }); err != nil { 37 logrus.Fatal(err) 38 } 39 logrus.Info("Deleted user") 40 fmt.Printf("Deleted user %s\n", username) 41 }, 42 } 43 44 func deleteUserValidateUsername(username string) error { 45 exists, err := database.CheckUserExists(db.User{ 46 Username: username, 47 }) 48 if err != nil { 49 logrus.Fatal(err) 50 } 51 if !exists { 52 return errordef.ErrUserDoesntExist 53 } 54 return nil 55 } 56 57 func init() { 58 DeleteCmd.AddCommand(userCmd) 59 }