From 364fbc0bf8388336dfb5d806d21dbf1c07424006 Mon Sep 17 00:00:00 2001 From: h9b Date: Thu, 10 Sep 2020 21:53:20 +0200 Subject: [PATCH] add counters on project level --- firebase/functions/index.js | 25 ++++++++++++++++++++++++- firebase/functions/package.json | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/firebase/functions/index.js b/firebase/functions/index.js index e7cd72ed1..42e0de252 100644 --- a/firebase/functions/index.js +++ b/firebase/functions/index.js @@ -47,6 +47,10 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use const endTimeRef = admin.database().ref('/v2/results/'+context.params.projectId+'/'+context.params.groupId+'/'+context.params.userId+'/endTime') const timeSpentMappingRef = admin.database().ref('/v2/results/'+context.params.projectId+'/'+context.params.groupId+'/'+context.params.userId+'/timeSpentMappingRef') + // references for project based counters for tasks and groups + const projectTaskContributionCountRef = admin.database().ref('/v2/users/'+context.params.userId+'/contributions/'+context.params.projectId+'/taskContributionCount') + const projectGroupContributionCountRef = admin.database().ref('/v2/users/'+context.params.userId+'/contributions/'+context.params.projectId+'/groupContributionCount') + // Counter for groups const groupFinishedCount = groupFinishedCountRef.transaction((currentCount) => { return currentCount + 1 @@ -118,6 +122,25 @@ exports.counter = functions.database.ref('/v2/results/{projectId}/{groupId}/{use }) promises.push(contributions) + // counters for tasks and groups per user and per project + const projectTaskContributionCount = numberOfTasksRef.once('value') + .then((dataSnapshot) => { + const numberOfTasks = dataSnapshot.val() + return numberOfTasks + }) + .then((numberOfTasks) => { + return projectTaskContributionCountRef.transaction((currentCount) => { + return currentCount + numberOfTasks + }) + }) + promises.push(projectTaskContributionCount) + + // Counter for groups + const projectGroupContributionCount = projectGroupContributionCountRef.transaction((currentCount) => { + return currentCount + 1 + }); + promises.push(projectGroupContributionCount) + // // TODO: Does not work // const timeSpentMapping = timeSpentMappingRef.set((timeSpentMapping) => { // const startTime = startTimeRef.once('value') @@ -268,4 +291,4 @@ exports.decProjectProgress = functions.database.ref('/v2/projects/{projectId}/re }) }) return projectProgress -}) +}) \ No newline at end of file diff --git a/firebase/functions/package.json b/firebase/functions/package.json index f14539fed..e5f4bb38e 100644 --- a/firebase/functions/package.json +++ b/firebase/functions/package.json @@ -19,7 +19,7 @@ "eslint-utils": "^1.4.1" }, "engines": { - "node": "8" + "node": "10" }, "private": true }