shad-go/ledger
2022-03-31 17:41:16 +03:00
..
docker-compose.yaml Add instructions to run databases in docker. 2022-03-31 17:40:40 +03:00
ledger.go Add ledger task 2022-03-31 14:19:47 +03:00
ledger_test.go Add ledger task 2022-03-31 14:19:47 +03:00
model.go Add ledger task 2022-03-31 14:19:47 +03:00
README.md [ledger] Fix readme. 2022-03-31 17:41:16 +03:00

ledger

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

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

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

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

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