Merge branch 'add-close-method' into 'master'

[dao, ledger] Add Close() method.

See merge request slon/shad-go-private!68
This commit is contained in:
verytable 2022-04-13 17:11:56 +00:00
commit 9ab6e227b6
6 changed files with 6 additions and 0 deletions

View file

@ -10,6 +10,7 @@
- Метод `Delete` удаляет пользователя из таблицы. - Метод `Delete` удаляет пользователя из таблицы.
- Метод `Lookup` возвращает `Name` пользователя по `ID`. - Метод `Lookup` возвращает `Name` пользователя по `ID`.
- Метод `List` возвращает список всех пользователей в таблице. - Метод `List` возвращает список всех пользователей в таблице.
- Метод `Close` закрывает коннекты к базе данных.
## Запуск тестов на linux ## Запуск тестов на linux

View file

@ -17,6 +17,7 @@ func TestDao(t *testing.T) {
dao, err := CreateDao(ctx, dsn) dao, err := CreateDao(ctx, dsn)
require.NoError(t, err) require.NoError(t, err)
defer func() { _ = dao.Close() }()
_, err = dao.Lookup(ctx, 42) _, err = dao.Lookup(ctx, 42)
require.ErrorIs(t, err, sql.ErrNoRows) require.ErrorIs(t, err, sql.ErrNoRows)

View file

@ -18,5 +18,6 @@ type (
Delete(ctx context.Context, id UserID) error Delete(ctx context.Context, id UserID) error
Lookup(ctx context.Context, id UserID) (User, error) Lookup(ctx context.Context, id UserID) (User, error)
List(ctx context.Context) ([]User, error) List(ctx context.Context) ([]User, error)
Close() error
} }
) )

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
} }