From 91e54c167437893df83d102ac1681ae5e98de8a4 Mon Sep 17 00:00:00 2001 From: Archie Fox Date: Sun, 9 Mar 2025 11:39:45 +0300 Subject: [PATCH] Implementation func deleted account --- go-demo-4/account/vault.go | 32 ++++++++++++++++++++++++++------ go-demo-4/main.go | 12 +++++++++--- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/go-demo-4/account/vault.go b/go-demo-4/account/vault.go index fb34b7e..d15b303 100644 --- a/go-demo-4/account/vault.go +++ b/go-demo-4/account/vault.go @@ -36,12 +36,7 @@ func NewVault() *Vault { func (vault *Vault) AddAccount(acc Account) { vault.Accounts = append(vault.Accounts, acc) - vault.UpdatedAt = time.Now() - data, err := vault.ToBytes() - if err != nil { - color.Red("Не удалось преобразовать") - } - files.FileWrite(data, "data.json") + vault.save() } func (vault *Vault) ToBytes() ([]byte, error) { @@ -62,3 +57,28 @@ func (vault *Vault) FindAccountsByUrl(url string) []Account { } return accounts } + +func (vault *Vault) DeleteAccountByUrl(url string) bool { + var accounts []Account + isDeleted := false + for _, account := range vault.Accounts { + isMatched := strings.Contains(account.Url, url) + if !isMatched { + accounts = append(accounts, account) + continue + } + isDeleted = true + } + vault.Accounts = accounts + vault.save() + return isDeleted +} + +func (vault *Vault) save() { + vault.UpdatedAt = time.Now() + data, err := vault.ToBytes() + if err != nil { + color.Red("Не удалось преобразовать") + } + files.FileWrite(data, "data.json") +} diff --git a/go-demo-4/main.go b/go-demo-4/main.go index 03f292d..55a9687 100644 --- a/go-demo-4/main.go +++ b/go-demo-4/main.go @@ -19,7 +19,7 @@ Menu: case 2: findAccount(vault) case 3: - deleteAccount() + deleteAccount(vault) default: break Menu } @@ -48,8 +48,14 @@ func findAccount(vault *account.Vault) { } } -func deleteAccount() { - +func deleteAccount(vault *account.Vault) { + url := account.PromptData("Введите URL для поиска: ") + isDeleted := vault.DeleteAccountByUrl(url) + if isDeleted { + color.Green("Удалено") + } else { + color.Red("Не найдено") + } } func createAccount(vault *account.Vault) {