summaryrefslogtreecommitdiff
path: root/gui/src/types/balanceMap.ts
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/types/balanceMap.ts')
-rw-r--r--gui/src/types/balanceMap.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/gui/src/types/balanceMap.ts b/gui/src/types/balanceMap.ts
new file mode 100644
index 0000000..760843f
--- /dev/null
+++ b/gui/src/types/balanceMap.ts
@@ -0,0 +1,17 @@
+import { Category } from "./category";
+import Currency from "./currency/currency";
+import { newGbpFromDto } from "./currency/gbp";
+
+type BalanceMap<T extends { id: any }> = {
+ [id in T["id"]]: Currency;
+};
+
+function newCategoryBalanceMapFromDto(dto: unknown): BalanceMap<Category> {
+ return Object.fromEntries(
+ (dto as { category_id: Category["id"]; balance: number }[]).map(
+ ({ category_id, balance }) => [category_id, newGbpFromDto(balance)],
+ ),
+ );
+}
+
+export { type BalanceMap, newCategoryBalanceMapFromDto };