shad-go/ledger/README.md
2022-04-13 18:13:39 +03:00

1.6 KiB
Raw Blame History

ledger

Реализуйте объект для хранения банковских счетов. Требуемый интерфейс находится в model.go.

  • Функция New должна создавать таблицу в базе данных.
  • Метод CreateAccount должен создавать новый счёт с заданным id.
  • Метод GetBalance должен возвращать текущий баланс.
  • Метод Deposit должен зачислять деньги на счёт.
  • Метод Withdraw должен снимать деньги со счёта. Если на счету недостаточно денег, метод должен возвращать ошибку ledger.ErrNoMoney.
  • Метод Transfer должен переводить деньги со счёта from на счёт to. Если на счету from недостаточно денег, метод должен возвращать ошибку ledger.ErrNoMoney.
  • Метод Close закрывает коннекты к базе данных.

Все операции должны быть атомарными. Для реализации некоторых методов вам потребуется использовать транзакции и row-level локи. Ваша реализация не должна создавать дедлоки на уровне базы данных.

Мы рекомендуем использовать функциональность SELECT FOR UPDATE.

Комментарии по запуску postgres смотрите в задаче dao.