[ledger] Add Close() method.

This commit is contained in:
Arseny Balobanov 2022-04-13 18:13:39 +03:00
parent cea2a44ab7
commit 4bbb4ddd01
3 changed files with 3 additions and 0 deletions

View file

@ -10,6 +10,7 @@
Если на счету недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`. Если на счету недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`.
- Метод `Transfer` должен переводить деньги со счёта `from` на счёт `to`. - Метод `Transfer` должен переводить деньги со счёта `from` на счёт `to`.
Если на счету `from` недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`. Если на счету `from` недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`.
- Метод `Close` закрывает коннекты к базе данных.
Все операции должны быть атомарными. Для реализации некоторых методов Все операции должны быть атомарными. Для реализации некоторых методов
вам потребуется использовать транзакции и row-level локи. Ваша реализация не должна создавать дедлоки на уровне базы данных. вам потребуется использовать транзакции и row-level локи. Ваша реализация не должна создавать дедлоки на уровне базы данных.

View file

@ -20,6 +20,7 @@ func TestLedger(t *testing.T) {
l0, err := ledger.New(ctx, dsn) l0, err := ledger.New(ctx, dsn)
require.NoError(t, err) require.NoError(t, err)
defer func() { _ = l0.Close() }()
t.Run("SimpleCommands", func(t *testing.T) { t.Run("SimpleCommands", func(t *testing.T) {
checkBalance := func(account ledger.ID, amount ledger.Money) { checkBalance := func(account ledger.ID, amount ledger.Money) {

View file

@ -18,4 +18,5 @@ type Ledger interface {
Deposit(ctx context.Context, id ID, amount Money) error Deposit(ctx context.Context, id ID, amount Money) error
Withdraw(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 Transfer(ctx context.Context, from, to ID, amount Money) error
Close() error
} }