diff options
| author | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-12-02 04:43:49 +0100 |
|---|---|---|
| committer | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-12-02 04:43:49 +0100 |
| commit | 83d63d6d3248666ebb23c7c29f0c58775f277482 (patch) | |
| tree | d6e094a866dcca3bf2320cd0b6754b452358bdc0 /pbt/ts/src/bank.ts | |
| parent | 8a6cfd0187b149a1ce83f62af62bb227ee441277 (diff) | |
| download | lambda-nantes-83d63d6d3248666ebb23c7c29f0c58775f277482.tar.gz | |
adapt Bank interface to async
Diffstat (limited to 'pbt/ts/src/bank.ts')
| -rw-r--r-- | pbt/ts/src/bank.ts | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/pbt/ts/src/bank.ts b/pbt/ts/src/bank.ts index 1f47739..f5981a4 100644 --- a/pbt/ts/src/bank.ts +++ b/pbt/ts/src/bank.ts @@ -4,7 +4,7 @@ import {Option, fromNullable, matchW} from 'fp-ts/lib/Option'; export type Account = string; export interface Bank { - balance: (account: Account) => Option<number>; + balance: (account: Account) => Promise<Option<number>>; /// Deposit amount into account /// @@ -15,8 +15,8 @@ export interface Bank { /// /// @param account The account to deposit into /// @param amt The amount to deposit - deposit: (account: Account, amt: number) => void; - withdraw: (account: Account, amt: number) => void; + deposit: (account: Account, amt: number) => Promise<void>; + withdraw: (account: Account, amt: number) => Promise<void>; } export class SimpleBank implements Bank { @@ -27,12 +27,12 @@ export class SimpleBank implements Bank { this.accounts = new Map(accounts); } - balance(account: Account): Option<number> { - return fromNullable(this.accounts.get(account)); + balance(account: Account): Promise<Option<number>> { + return Promise.resolve(fromNullable(this.accounts.get(account))); } - deposit(account: Account, amt: number): void { - const current = this.balance(account); + deposit(account: Account, amt: number): Promise<void> { + const current = fromNullable(this.accounts.get(account)); matchW( () => { throw new Error(`Unknown account ${account}`); @@ -41,10 +41,11 @@ export class SimpleBank implements Bank { this.accounts.set(account, bal + amt); }, )(current); + return Promise.resolve(); } - withdraw(account: Account, amt: number): void { - const current = this.balance(account); + withdraw(account: Account, amt: number): Promise<void> { + const current = fromNullable(this.accounts.get(account)); matchW( () => { throw new Error(`Unknown account ${account}`); @@ -53,6 +54,7 @@ export class SimpleBank implements Bank { this.accounts.set(account, bal - amt); }, )(current); + return Promise.resolve(); } } |
