aboutsummaryrefslogtreecommitdiff
path: root/src/db.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.js')
-rw-r--r--src/db.js21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/db.js b/src/db.js
index f97e9f0..e16c827 100644
--- a/src/db.js
+++ b/src/db.js
@@ -29,13 +29,14 @@ const write = async (obj) => {
switch (obj.type) {
case 'introduction':
case 'expense':
+ case 'transfer':
roomHash = _getHash(obj.roomId)
db.data.rooms[roomHash] ||= { events: [] }
db.data.rooms[roomHash].events.push(obj)
break
default:
- throw new Error('Invalid type for db.write()')
+ throw new Error(`Invalid type "${obj.type}" for db.write()`)
break
}
@@ -118,22 +119,30 @@ const getBalance = async (roomId) => {
data.rooms[roomHash].events.forEach((event) => {
switch (event.type) {
case 'introduction':
- balance.userIds.push(event.userId)
- balance[event.userId] = {
+ balance.userIds.push(event.data.userId)
+ balance[event.data.userId] = {
totalSpent: 0,
spentForUserId: {},
+ sentToUserId: {},
}
break
case 'expense':
- balance[event.userId].totalSpent += event.data.amount
+ balance[event.data.from].totalSpent += event.data.amount
balance.userIds.forEach((userId) => {
- balance[event.userId].spentForUserId[userId] ||= 0
- balance[event.userId].spentForUserId[userId] +=
+ balance[event.data.from].spentForUserId[userId] ||= 0
+ balance[event.data.from].spentForUserId[userId] +=
event.data.amount / balance.userIds.length
})
break
+ case 'transfer':
+ balance[event.data.from].totalSpent += event.data.amount
+ balance[event.data.from].sentToUserId[event.data.to] ||= 0
+ balance[event.data.from].sentToUserId[event.data.to] +=
+ event.data.amount
+ break
+
default:
break
}