1.6 KiB
1.6 KiB
ledger
Реализуйте объект для хранения банковских счетов. Требуемый интерфейс находится в model.go
.
- Функция
New
должна создавать таблицу в базе данных. - Метод
CreateAccount
должен создавать новый счёт с заданнымid
. - Метод
GetBalance
должен возвращать текущий баланс. - Метод
Deposit
должен зачислять деньги на счёт. - Метод
Withdraw
должен снимать деньги со счёта. Если на счету не достаточно денег, метод должен возвращать ошибкуledger.ErrNoMoney
. - Метод
Transfer
должен переводить деньги со счётаfrom
на счётto
. Если на счетуfrom
не достаточно денег, метод должен возвращать ошибкуledger.ErrNoMoney
.
Все операции должны быть атомарными. Для реализации некоторых методов вам потребуется использовать транзакции и row-level локи. Ваша реализация не должна создавать дедлоки на уровне базы данных.
Мы рекомендуем использовать функциональность SELECT FOR UPDATE
.
Комментарии по запуску postgres смотрите в задаче dao
.