summaryrefslogtreecommitdiff
path: root/pbt/ts/src/bank.ts
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-12-02 04:43:49 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-12-02 04:43:49 +0100
commit83d63d6d3248666ebb23c7c29f0c58775f277482 (patch)
treed6e094a866dcca3bf2320cd0b6754b452358bdc0 /pbt/ts/src/bank.ts
parent8a6cfd0187b149a1ce83f62af62bb227ee441277 (diff)
downloadlambda-nantes-83d63d6d3248666ebb23c7c29f0c58775f277482.tar.gz
adapt Bank interface to async
Diffstat (limited to 'pbt/ts/src/bank.ts')
-rw-r--r--pbt/ts/src/bank.ts20
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();
}
}