From 280cfa82fa27975ee5a5a1b47f074a4d4b788c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Geir=20G=C3=A5sodden?= Date: Sat, 21 Dec 2019 07:21:34 +0100 Subject: [PATCH] Adds /students path (minor) --- README.md | 7 ++++++- api/students-total.js | 17 +++++++++++++++++ now-demo.json | 1 + now.json | 9 +++++++++ package-lock.json | 20 ++++++++++---------- 5 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 api/students-total.js diff --git a/README.md b/README.md index 7f4dae4..8b87fb1 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,10 @@ Get number of logs in queue Get stats for number of kopiPrPost yff-bekreftelse-bedrift +### ```GET /stats/students``` + +Get the total number of students (from tjommi) + ## Development Add a local .env file @@ -86,6 +90,7 @@ Add a local .env file ``` MONGODB_CONNECTION=mongodb-connection-string MONGODB_COLLECTION=mongodb-collection-name +MONGODB_COLLECTION_TJOMMI=mongodb-collection-name-tjommi MONGODB_NAME=mongodb-db-name ``` @@ -102,7 +107,7 @@ $ npm run deploy ## Related - [minelev-web](https://github.com/telemark/minelev-web) web frontend for MinElev -- [minelev-buddy](https://github.com/telemark/minelev-buddy) buddy service for MinElev +- [minelev-tjommi-api](https://github.com/telemark/minelev-tjommi-api) tjommi service for MinElev - [minelev-notifications](https://github.com/telemark/minelev-notifications) notifications service for MinElev - [minelev-leder](https://github.com/telemark/minelev-leder) web frontend for MinElev - school administration - [minelev-logs](https://github.com/telemark/minelev-logs) logs service for MinElev diff --git a/api/students-total.js b/api/students-total.js new file mode 100644 index 0000000..75516d6 --- /dev/null +++ b/api/students-total.js @@ -0,0 +1,17 @@ +const mongo = require('../lib/mongo') +const logger = require('../lib/logger') + +module.exports = async (request, response) => { + const db = await mongo() + const tjommi = db.collection(process.env.MONGODB_COLLECTION_TJOMMI) + logger('info', ['handle-stats', 'action', 'students']) + try { + const count = await tjommi.countDocuments({ type: 'student' }) + logger('info', ['handle-stats', 'action', 'students', 'success', 'found', count]) + response.json({ total: count }) + } catch (error) { + logger('error', ['handle-stats', 'action', 'students', error]) + response.status(500) + response.send(error) + } +} diff --git a/now-demo.json b/now-demo.json index 1ed250c..6314675 100644 --- a/now-demo.json +++ b/now-demo.json @@ -9,6 +9,7 @@ "NODE_ENV": "production", "MONGODB_CONNECTION": "@db-cosmos-dev-connection-read", "MONGODB_COLLECTION": "logs", + "MONGODB_COLLECTION_TJOMMI": "tjommi", "MONGODB_NAME": "minelev" }, "builds": [ diff --git a/now.json b/now.json index 9136e30..518c385 100644 --- a/now.json +++ b/now.json @@ -9,6 +9,7 @@ "NODE_ENV": "production", "MONGODB_CONNECTION": "@db-cosmos-prod-connection-read", "MONGODB_COLLECTION": "@db-cosmos-prod-collection-logs-name", + "MONGODB_COLLECTION_TJOMMI": "@db-cosmos-prod-collection-tjommi-name", "MONGODB_NAME": "@db-cosmos-prod-db-name" }, "builds": [ @@ -158,6 +159,14 @@ "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" } }, + { + "src": "/stats/students", + "dest": "/api/students-total.js", + "headers": { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept" + } + }, { "src": "/stats/(.*)", "dest": "/README.html" diff --git a/package-lock.json b/package-lock.json index 9c4ef3b..7366617 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1727,22 +1727,22 @@ } }, "es-abstract": { - "version": "1.17.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz", - "integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", + "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, "es-to-primitive": { @@ -4738,9 +4738,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.1.tgz", - "integrity": "sha512-7LutE94sz/NKSYegK+/4E77+8DipxF+Qn2Tmu362AcmsF2NYq/wx3+ObvU90TKEhjf7hQoFXo23ajjrXP7eUgg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", + "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", "dev": true, "requires": { "jsesc": "~0.5.0"