From e6340bd24fe984a38775c40f6e63ada20ebdd4d4 Mon Sep 17 00:00:00 2001 From: Archer Fox Date: Sun, 16 Mar 2025 23:52:59 +0300 Subject: [PATCH] Add func find on Login --- go-demo-4/account/account.go | 7 +++++-- go-demo-4/main.go | 31 +++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/go-demo-4/account/account.go b/go-demo-4/account/account.go index 9a5ea9f..4be4e86 100644 --- a/go-demo-4/account/account.go +++ b/go-demo-4/account/account.go @@ -2,10 +2,12 @@ package account import ( "errors" - "github.com/fatih/color" + "fmt" "math/rand/v2" "net/url" "time" + + "github.com/fatih/color" ) var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ1234567890-*!?()#$%&") @@ -20,7 +22,8 @@ type Account struct { // метод вывода пароля func (acc *Account) Output() { - c := color.New(color.FgRed, color.Italic, color.Bold) + c := color.New(color.FgRed, color.Bold) + fmt.Println() c.Printf("password: %v\nlogin: %v\nURL: %v\n", acc.Password, acc.Login, acc.Url) } diff --git a/go-demo-4/main.go b/go-demo-4/main.go index c4755ec..7c27ac7 100644 --- a/go-demo-4/main.go +++ b/go-demo-4/main.go @@ -12,8 +12,9 @@ import ( var menu = map[string]func(*account.VaultWithDb){ "1": createAccount, - "2": findAccount, - "3": deleteAccount, + "2": findAccountByUrl, + "3": findAccountByLogin, + "4": deleteAccount, } func main() { @@ -26,9 +27,10 @@ Menu: for { variant := PromptData([]string{ "1. Создать аккаунт", - "2. Найти аккаунт", - "3. Удалить аккаунт", - "4. Выход", + "2. Найти аккаунт по URL", + "3. Найти аккаунт по логину", + "4. Удалить аккаунт", + "5. Выход", "Выберите вариант", }) menuFunc := menu[variant] @@ -49,16 +51,29 @@ Menu: } } -func findAccount(vault *account.VaultWithDb) { +func findAccountByUrl(vault *account.VaultWithDb) { url := PromptData([]string{"Введите URL для поиска"}) // Анонимная функция как параметр accounts := vault.FindAccounts(url, func(acc account.Account, str string) bool { return strings.Contains(acc.Url, str) }) - if len(accounts) == 0 { + outputResults(&accounts) +} + +func findAccountByLogin(vault *account.VaultWithDb) { + login := PromptData([]string{"Введите Login для поиска"}) + // Анонимная функция как параметр + accounts := vault.FindAccounts(login, func(acc account.Account, str string) bool { + return strings.Contains(acc.Login, str) + }) + outputResults(&accounts) +} + +func outputResults(accounts *[]account.Account) { + if len(*accounts) == 0 { color.Red("Аккаунт не найден!") } - for _, account := range accounts { + for _, account := range *accounts { account.Output() } }