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  }