shad-go/ledger/README.md
2022-03-31 17:41:16 +03:00

19 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ledger
Реализуйте объект для хранения банковских счетов. Требуемый интерфейс находится в `model.go`.
- Функция `New` должна создавать таблицу в базе данных.
- Метод `CreateAccount` должен создавать новый счёт с заданным `id`.
- Метод `GetBalance` должен возвращать текущий баланс.
- Метод `Deposit` должен зачислять деньги на счёт.
- Метод `Withdraw` должен снимать деньги со счёта.
Если на счету недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`.
- Метод `Transfer` должен переводить деньги со счёта `from` на счёт `to`.
Если на счету `from` недостаточно денег, метод должен возвращать ошибку `ledger.ErrNoMoney`.
Все операции должны быть атомарными. Для реализации некоторых методов
вам потребуется использовать транзакции и row-level локи. Ваша реализация не должна создавать дедлоки на уровне базы данных.
Мы рекомендуем использовать функциональность `SELECT FOR UPDATE`.
Комментарии по запуску postgres смотрите в задаче [dao](../dao/).