From 4bbb4ddd0154549e2eab7b63863285548a8034a5 Mon Sep 17 00:00:00 2001 From: Arseny Balobanov Date: Wed, 13 Apr 2022 18:13:39 +0300 Subject: [PATCH] [ledger] Add Close() method. --- ledger/README.md | 1 + ledger/ledger_test.go | 1 + ledger/model.go | 1 + 3 files changed, 3 insertions(+) diff --git a/ledger/README.md b/ledger/README.md index bf402b8..873753b 100644 --- a/ledger/README.md +++ b/ledger/README.md @@ -10,6 +10,7 @@ Если на счету недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`. - Метод `Transfer` должен переводить деньги со счёта `from` на счёт `to`. Если на счету `from` недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`. +- Метод `Close` закрывает коннекты к базе данных. Все операции должны быть атомарными. Для реализации некоторых методов вам потребуется использовать транзакции и row-level локи. Ваша реализация не должна создавать дедлоки на уровне базы данных. diff --git a/ledger/ledger_test.go b/ledger/ledger_test.go index cfc909f..81d7491 100644 --- a/ledger/ledger_test.go +++ b/ledger/ledger_test.go @@ -20,6 +20,7 @@ func TestLedger(t *testing.T) { l0, err := ledger.New(ctx, dsn) require.NoError(t, err) + defer func() { _ = l0.Close() }() t.Run("SimpleCommands", func(t *testing.T) { checkBalance := func(account ledger.ID, amount ledger.Money) { diff --git a/ledger/model.go b/ledger/model.go index 3bafcc0..727ed62 100644 --- a/ledger/model.go +++ b/ledger/model.go @@ -18,4 +18,5 @@ type Ledger interface { Deposit(ctx context.Context, id ID, amount Money) error Withdraw(ctx context.Context, id ID, amount Money) error Transfer(ctx context.Context, from, to ID, amount Money) error + Close() error }