Fix main.go menu

This commit is contained in:
Archie Fox
2025-03-14 18:33:16 +03:00
parent 6da4edff07
commit 3d40ede06d
3 changed files with 33 additions and 32 deletions

View File

@@ -2,7 +2,6 @@ package account
import ( import (
"errors" "errors"
"fmt"
"github.com/fatih/color" "github.com/fatih/color"
"math/rand/v2" "math/rand/v2"
"net/url" "net/url"
@@ -55,11 +54,3 @@ func NewAccount(login, password, urlString string) (*Account, error) {
} }
return newAcc, nil return newAcc, nil
} }
// функция введения данных
func PromptData(prompt string) string {
fmt.Print(prompt)
var res string
fmt.Scanln(&res)
return res
}

View File

@@ -1,9 +1,10 @@
package files package files
import ( import (
"fmt"
"os" "os"
"password/output" "password/output"
"github.com/fatih/color"
) )
type JsonDb struct { type JsonDb struct {
@@ -36,5 +37,5 @@ func (db *JsonDb) Write(content []byte) {
output.PrintError(err) output.PrintError(err)
return return
} }
fmt.Println("Файл успешно записан") color.Green("Файл успешно записан")
} }

View File

@@ -13,17 +13,23 @@ func main() {
// fmt.Println(output.Sum(100, 42)) // fmt.Println(output.Sum(100, 42))
// fmt.Println(output.Sum(10.7, 3.14)) // fmt.Println(output.Sum(10.7, 3.14))
// fmt.Println(output.Sum("Hello ", "world!")) // fmt.Println(output.Sum("Hello ", "world!"))
fmt.Println("__Менеджер паролей__") color.Blue("__Менеджер паролей__")
vault := account.NewVault(files.NewJsonDb("data.json")) vault := account.NewVault(files.NewJsonDb("data.json"))
Menu: Menu:
for { for {
variant := getMenu() variant := PromptData([]string{
"1. Создать аккаунт",
"2. Найти аккаунт",
"3. Удалить аккаунт",
"4. Выход",
"Выберите вариант",
})
switch variant { switch variant {
case 1: case "1":
createAccount(vault) createAccount(vault)
case 2: case "2":
findAccount(vault) findAccount(vault)
case 3: case "3":
deleteAccount(vault) deleteAccount(vault)
default: default:
break Menu break Menu
@@ -31,19 +37,8 @@ Menu:
} }
} }
func getMenu() int {
var variant int
fmt.Println("Выберите вариант:")
fmt.Println("1. Создать аккаунт")
fmt.Println("2. Найти аккаунт")
fmt.Println("3. Удалить аккаунт")
fmt.Println("4. Выход")
fmt.Scan(&variant)
return variant
}
func findAccount(vault *account.VaultWithDb) { func findAccount(vault *account.VaultWithDb) {
url := account.PromptData("Введите URL для поиска: ") url := PromptData([]string{"Введите URL для поиска: "})
accounts := vault.FindAccountsByUrl(url) accounts := vault.FindAccountsByUrl(url)
if len(accounts) == 0 { if len(accounts) == 0 {
color.Red("Аккаунт не найден!") color.Red("Аккаунт не найден!")
@@ -54,7 +49,7 @@ func findAccount(vault *account.VaultWithDb) {
} }
func deleteAccount(vault *account.VaultWithDb) { func deleteAccount(vault *account.VaultWithDb) {
url := account.PromptData("Введите URL для поиска: ") url := PromptData([]string{"Введите URL для поиска: "})
isDeleted := vault.DeleteAccountByUrl(url) isDeleted := vault.DeleteAccountByUrl(url)
if isDeleted { if isDeleted {
color.Green("Удалено") color.Green("Удалено")
@@ -64,9 +59,9 @@ func deleteAccount(vault *account.VaultWithDb) {
} }
func createAccount(vault *account.VaultWithDb) { func createAccount(vault *account.VaultWithDb) {
login := account.PromptData("Введите логин: ") login := PromptData([]string{"Введите логин: "})
password := account.PromptData("Введите пароль: ") password := PromptData([]string{"Введите пароль: "})
url := account.PromptData("Введите URL: ") url := PromptData([]string{"Введите URL: "})
myAccount, err := account.NewAccount(login, password, url) myAccount, err := account.NewAccount(login, password, url)
if err != nil { if err != nil {
@@ -75,3 +70,17 @@ func createAccount(vault *account.VaultWithDb) {
} }
vault.AddAccount(*myAccount) vault.AddAccount(*myAccount)
} }
// функция введения данных
func PromptData[T any](prompt []T) string {
for i, line := range prompt {
if i == len(prompt)-1 {
fmt.Printf("%v: ", line)
} else {
fmt.Println(line)
}
}
var res string
fmt.Scanln(&res)
return res
}