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:
commit
9ab6e227b6
6 changed files with 6 additions and 0 deletions
|
@ -10,6 +10,7 @@
|
||||||
- Метод `Delete` удаляет пользователя из таблицы.
|
- Метод `Delete` удаляет пользователя из таблицы.
|
||||||
- Метод `Lookup` возвращает `Name` пользователя по `ID`.
|
- Метод `Lookup` возвращает `Name` пользователя по `ID`.
|
||||||
- Метод `List` возвращает список всех пользователей в таблице.
|
- Метод `List` возвращает список всех пользователей в таблице.
|
||||||
|
- Метод `Close` закрывает коннекты к базе данных.
|
||||||
|
|
||||||
## Запуск тестов на linux
|
## Запуск тестов на linux
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -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 локи. Ваша реализация не должна создавать дедлоки на уровне базы данных.
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue