.. | ||
docker-compose.yaml | ||
ledger.go | ||
ledger_test.go | ||
model.go | ||
README.md |
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.