71 lines
1.2 KiB
Go
71 lines
1.2 KiB
Go
package delete
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/manifoldco/promptui"
|
|
"github.com/urfave/cli/v2"
|
|
"gitnet.fr/deblan/budget/database/manager"
|
|
"gitnet.fr/deblan/budget/database/model"
|
|
)
|
|
|
|
type promptContent struct {
|
|
errorMsg string
|
|
label string
|
|
}
|
|
|
|
func promptGetInput(pc promptContent) string {
|
|
validate := func(input string) error {
|
|
if len(input) <= 0 {
|
|
return errors.New(pc.errorMsg)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
templates := &promptui.PromptTemplates{
|
|
Prompt: "{{ . }} ",
|
|
Valid: "{{ . | green }} ",
|
|
Invalid: "{{ . | red }} ",
|
|
Success: "{{ . | bold }} ",
|
|
}
|
|
|
|
prompt := promptui.Prompt{
|
|
Label: pc.label,
|
|
Templates: templates,
|
|
Validate: validate,
|
|
}
|
|
|
|
result, err := prompt.Run()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
return strings.TrimSpace(result)
|
|
}
|
|
|
|
func Command(cCtx *cli.Context) error {
|
|
username := promptGetInput(promptContent{
|
|
"Please provide a username.",
|
|
"Username:",
|
|
})
|
|
|
|
var count int64
|
|
db := manager.Get()
|
|
db.Db.Model(model.User{}).Where("username = ?", username).Count(&count)
|
|
|
|
if count == 0 {
|
|
fmt.Printf("User does not exist!\n")
|
|
os.Exit(1)
|
|
}
|
|
|
|
var user model.User
|
|
db.Db.Model(model.User{}).Where("username = ?", username).Find(&user)
|
|
db.Db.Delete(user)
|
|
|
|
return nil
|
|
}
|