8000
Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

ledger

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

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

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

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

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

0