shad-go/ledger
2023-04-08 13:08:35 +04: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 Check for goroutine leaks in SQL tasks 2023-04-08 13:08:35 +04:00
model.go [ledger] Add Close() method. 2022-04-13 18:13:39 +03:00
README.md [ledger] Add Close() method. 2022-04-13 18:13:39 +03:00

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.