From b14c2e2fbb97fdc8e0c6f6ba4f5b5531224d66d7 Mon Sep 17 00:00:00 2001 From: alaynapuck28 Date: Sat, 17 Aug 2019 13:19:47 -0500 Subject: [PATCH 1/3] foxes and data done --- README.md | 88 ++++--- package-lock.json | 339 +++++++++++++++++++-------- package.json | 19 +- server/controllers/dataController.js | 38 +++ server/controllers/fox.js | 7 + server/controllers/messages.js | 0 server/controllers/orders.js | 0 server/controllers/tasks.js | 0 server/index.js | 78 ++++++ server/routes/dataRoutes.js | 21 ++ server/routes/foxRoutes.js | 7 + server/routes/messageRoutes.js | 0 server/routes/orderRoutes.js | 0 server/routes/taskRoutes.js | 0 14 files changed, 447 insertions(+), 150 deletions(-) create mode 100644 server/controllers/dataController.js create mode 100644 server/controllers/fox.js create mode 100644 server/controllers/messages.js create mode 100644 server/controllers/orders.js create mode 100644 server/controllers/tasks.js create mode 100644 server/routes/dataRoutes.js create mode 100644 server/routes/foxRoutes.js create mode 100644 server/routes/messageRoutes.js create mode 100644 server/routes/orderRoutes.js create mode 100644 server/routes/taskRoutes.js diff --git a/README.md b/README.md index 6d12ee5..be2d0d5 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,59 @@ - ### Summary + Your company's front end team has completed a business dashboard requested by management. You need to build the data server that will provide the front end client with the data it needs to show. +### Setup-done -### Setup -* Fork, Clone, npm install -* You will need a database setup either locally or in the cloud -* remember to start your server -* Use postman to test your server, don't rely on the web page which is just for show. +- Fork, Clone, npm install +- You will need a database setup either locally or in the cloud +- remember to start your server +- Use postman to test your server, don't rely on the web page which is just for show. -### Create a server -* npm install express and body-parser -* server/index.js -* connect to your database -* serve static files from the public folder +### Create a server-need database + +- npm install express and body-parser +- server/index.js +- connect to your database +- serve static files from the public folder ### Routes -* create get routes. -* look at data.csv. read this file and pull the information out of it - * /dateTime - return the current time - * /newComments - * /newTasks - * /newOrders - * /tickets + +- create get routes. +- look at data.csv. read this file and pull the information out of it + - /dateTime - return the current time + - /newComments + - /newTasks + - /newOrders + - /tickets ### Database -* add 3 collections: messages, tasks, orders +- add 3 collections: messages, tasks, orders ### MVC -* create Routes, Models and Controllers -* Look at server/state.js -* create mongoose models that follow the example data -* create get routes, use the Models to get data from the database - * /tasks - * /orders - * /messages -* create post routes, use the Models to insert data into the database - * /tasks - * /orders - * /messages - - -### node-fetch -* The ceo likes to look at pictures of foxes while reading business reports -* install node-fetch -* make a route for /foxes -* make a http get call to https://randomfox.ca/floof/ -* send back the image value +- create Routes, Models and Controllers +- Look at server/state.js +- create mongoose models that follow the example data +- create get routes, use the Models to get data from the database + - /tasks + - /orders + - /messages +- create post routes, use the Models to insert data into the database + - /tasks + - /orders + - /messages + +### node-fetch-done + +- The ceo likes to look at pictures of foxes while reading business reports +- install node-fetch +- make a route for /foxes +- make a http get call to https://randomfox.ca/floof/ +- send back the image value ### Run Server -* Use postman to test that it is working -* If everything is coded properly, the client webpage should show the data from the server -* Use the network tab to inspect what http messages are being sent - - - - +- Use postman to test that it is working +- If everything is coded properly, the client webpage should show the data from the server +- Use the network tab to inspect what http messages are being sent diff --git a/package-lock.json b/package-lock.json index 87202ad..754441f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1787,7 +1787,6 @@ "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" @@ -2644,8 +2643,7 @@ "bluebird": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" }, "bn.js": { "version": "4.11.8", @@ -2657,7 +2655,6 @@ "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, "requires": { "bytes": "3.1.0", "content-type": "~1.0.4", @@ -2674,14 +2671,12 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -2689,14 +2684,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -2879,6 +2872,11 @@ "node-int64": "^0.4.0" } }, + "bson": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.1.tgz", + "integrity": "sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg==" + }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -3944,7 +3942,6 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, "requires": { "safe-buffer": "5.1.2" } @@ -3952,8 +3949,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { "version": "1.6.0", @@ -3967,14 +3963,12 @@ "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "copy-concurrently": { "version": "1.0.5", @@ -4383,6 +4377,26 @@ "cssom": "0.3.x" } }, + "csvtojson": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", + "requires": { + "bluebird": "^3.5.1", + "lodash": "^4.17.3", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -4579,8 +4593,7 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { "version": "1.0.0", @@ -4595,8 +4608,7 @@ "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-newline": { "version": "2.1.0", @@ -4809,8 +4821,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { "version": "1.3.201", @@ -4848,8 +4859,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "end-of-stream": { "version": "1.4.1", @@ -4923,8 +4933,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", @@ -5433,8 +5442,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { "version": "3.1.2", @@ -5562,7 +5570,6 @@ "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -5599,14 +5606,12 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -5614,14 +5619,12 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" } } }, @@ -5857,7 +5860,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -5872,7 +5874,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -5880,8 +5881,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -6017,8 +6017,7 @@ "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, "fragment-cache": { "version": "0.2.1", @@ -6032,8 +6031,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "from2": { "version": "2.3.0", @@ -6541,7 +6539,6 @@ "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -6553,8 +6550,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, @@ -6608,7 +6604,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -6811,8 +6806,7 @@ "ipaddr.js": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", - "dev": true + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, "is-absolute-url": { "version": "2.1.0", @@ -7063,6 +7057,11 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8488,6 +8487,11 @@ "object.assign": "^4.1.0" } }, + "kareem": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.0.tgz", + "integrity": "sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg==" + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -8660,8 +8664,7 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -8830,8 +8833,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { "version": "4.3.0", @@ -8862,6 +8864,12 @@ "readable-stream": "^2.0.1" } }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -8876,8 +8884,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, "merge-stream": { "version": "1.0.1", @@ -8897,8 +8904,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "microevent.ts": { "version": "0.1.1", @@ -8954,14 +8960,12 @@ "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dev": true, "requires": { "mime-db": "1.40.0" } @@ -9084,6 +9088,61 @@ } } }, + "mongodb": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.2.7.tgz", + "integrity": "sha512-2YdWrdf1PJgxcCrT1tWoL6nHuk6hCxhddAAaEh8QJL231ci4+P9FLyqopbTm2Z2sAU6mhCri+wd9r1hOcHdoMw==", + "requires": { + "mongodb-core": "3.2.7", + "safe-buffer": "^5.1.2" + } + }, + "mongodb-core": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.2.7.tgz", + "integrity": "sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==", + "requires": { + "bson": "^1.1.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, + "mongoose": { + "version": "5.6.7", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.6.7.tgz", + "integrity": "sha512-42rbdZ9HLBbGjLvRSB4voqemgFkJTIyqSLLcJARKs1zdQzEJ3O77dWRllIy2bSo35GcY17ihEdoJX27pDqu3Mg==", + "requires": { + "async": "2.6.2", + "bson": "~1.1.1", + "kareem": "2.3.0", + "mongodb": "3.2.7", + "mongodb-core": "3.2.7", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.6.0", + "mquery": "3.2.1", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.1.2", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -9098,11 +9157,47 @@ "run-queue": "^1.0.3" } }, + "mpath": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz", + "integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw==" + }, + "mquery": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.1.tgz", + "integrity": "sha512-kY/K8QToZWTTocm0U+r8rqcJCp5PRl6e8tPmoDs5OeSO3DInZE2rAL6AYH+V406JTo8305LdASOQcxRDqHojyw==", + "requires": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "dependencies": { + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { "version": "6.2.3", @@ -9169,8 +9264,7 @@ "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { "version": "2.6.1", @@ -9193,6 +9287,11 @@ "lower-case": "^1.1.1" } }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, "node-forge": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", @@ -9484,7 +9583,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, "requires": { "ee-first": "1.1.1" } @@ -9741,8 +9839,7 @@ "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -9795,8 +9892,7 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "path-type": { "version": "3.0.0", @@ -10980,7 +11076,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "dev": true, "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.0" @@ -11112,14 +11207,12 @@ "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, "requires": { "bytes": "3.1.0", "http-errors": "1.7.2", @@ -11130,8 +11223,7 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" } } }, @@ -11447,6 +11539,11 @@ "safe-regex": "^1.1.0" } }, + "regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, "regexp-tree": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", @@ -11650,6 +11747,27 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + } + } + }, "requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -11775,8 +11893,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -11790,8 +11907,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { "version": "4.1.0", @@ -11810,6 +11926,15 @@ "walker": "~1.0.5" } }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, "sass-loader": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", @@ -11938,7 +12063,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -11959,7 +12083,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" }, @@ -11967,22 +12090,19 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -12052,7 +12172,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -12098,8 +12217,7 @@ "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sha.js": { "version": "2.4.11", @@ -12173,6 +12291,11 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, + "sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -12219,6 +12342,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -12431,6 +12559,15 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -12580,8 +12717,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stealthy-require": { "version": "1.1.1", @@ -12992,8 +13128,7 @@ "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "tough-cookie": { "version": "2.5.0", @@ -13075,7 +13210,6 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -13190,8 +13324,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "unquote": { "version": "1.1.1", @@ -13353,8 +13486,7 @@ "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { "version": "3.3.2", @@ -13375,8 +13507,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "vendors": { "version": "1.0.3", diff --git a/package.json b/package.json index 7b82fba..0b76c99 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,11 @@ "react-scripts": "*" }, "dependencies": { + "body-parser": "^1.19.0", + "csvtojson": "^2.0.10", + "express": "^4.17.1", + "mongoose": "^5.6.7", + "node-fetch": "^2.6.0", "prop-types": "*", "react": "*", "react-dom": "*" @@ -29,5 +34,17 @@ "last 1 firefox version", "last 1 safari version" ] - } + }, + "description": "Your company's front end team has completed a business dashboard requested by management. You need to build the data server that will provide the front end client with the data it needs to show.", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/alaynapuck28/checkpoint-backend-1.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/alaynapuck28/checkpoint-backend-1/issues" + }, + "homepage": "https://github.com/alaynapuck28/checkpoint-backend-1#readme" } diff --git a/server/controllers/dataController.js b/server/controllers/dataController.js new file mode 100644 index 0000000..45e832e --- /dev/null +++ b/server/controllers/dataController.js @@ -0,0 +1,38 @@ +const csv = require("csvtojson"); +const csvFilePath = "./server/data.csv"; + +exports.getDate = function(req, res) { + res.send(new Date()); +}; +exports.getComments = function(req, res) { + csv() + .fromFile(csvFilePath) + .then(jsonObj => { + comments = jsonObj[0].new_comments; + res.send(comments); + }); +}; +exports.getTasks = function(req, res) { + csv() + .fromFile(csvFilePath) + .then(jsonObj => { + tasks = jsonObj[0].new_tasks; + res.send(tasks); + }); +}; +exports.getOrders = function(req, res) { + csv() + .fromFile(csvFilePath) + .then(jsonObj => { + orders = jsonObj[0].new_orders; + res.send(orders); + }); +}; +exports.getTickets = function(req, res) { + csv() + .fromFile(csvFilePath) + .then(jsonObj => { + tickets = jsonObj[0].tickets; + res.send(tickets); + }); +}; diff --git a/server/controllers/fox.js b/server/controllers/fox.js new file mode 100644 index 0000000..f690ef8 --- /dev/null +++ b/server/controllers/fox.js @@ -0,0 +1,7 @@ +const fetch = require("node-fetch"); + +exports.getFox = function getFox(req, res) { + fetch("https://randomfox.ca/floof/") + .then(res => res.json()) + .then(data => res.json(data.image)); +}; diff --git a/server/controllers/messages.js b/server/controllers/messages.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controllers/orders.js b/server/controllers/orders.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controllers/tasks.js b/server/controllers/tasks.js new file mode 100644 index 0000000..e69de29 diff --git a/server/index.js b/server/index.js index e69de29..ee5ae48 100644 --- a/server/index.js +++ b/server/index.js @@ -0,0 +1,78 @@ +let express = require("express"); +let app = express(); +let bodyParser = require("body-parser"); +let mongoose = require("mongoose"); +mongoose.connect( + "mongodb+srv://alaynapuck28:horseshoe2@cluster0-3umzc.mongodb.net/checkpoint1", + { useNewUrlParser: true } +); +//routes +// let dataRoute = require("./routes/dateRoute"); + +app.use(bodyParser.json()); +app.use(express.static("public")); + +let dataRoutes = require("./routes/dataRoutes"); +var foxRoutes = require("./routes/foxRoutes"); + +app.use(dataRoutes); +// app.use("/tasks", taskRoutes) +// app.use("/orders", orderRoutes) +// app.use("/messages", messageRoutes) +app.use("/foxes", foxRoutes); + +app.listen(3000, err => { + if (err) { + return console.log("Error", err); + } + console.log("Web server is now listening for messages on port", 3000); +}); + +// var messageRoutes= require("./routes/messageRoutes") +// var orderRoutes = require("./routes/orderRoutes") +// var taskRoutes = require("./routes/taskRoutes") + +//*********** */broken code that won't read the csv :(********** +// const fs = require("fs"); + +// fs.readFile(csvFilePath, "utf8", (err, data) => { +// // if (err) throw err; +// // console.log(data); +// const dataSent = data.split("\n"); +// const dataNums = dataSent[1].split(","); +// }); +// const fs = require("fs"); +// var content; +// First I want to read the file +// fs.readFile("./data.csv", function read(err, data) { +// if (err) { +// throw err; +// } +// content = data; + +// // Invoke the next step here however you like +// console.log(content); // Put all of the code here (not the best solution) +// processFile(); // Or put the next step in a function and invoke it +// }); + +// function processFile() { +// console.log(content); +// } + +// app.get("/dateTime", (req, res) => { +// let d = new Date(); +// res.send(d); +// }); +// app.get("/newComments", (req, res) => { +// res.send(dataNums[0]); +// }); +// app.get("/newTasks", (req, res) => { +// res.send(dataNums[1]); +// }); +// app.get("/newOrders", (req, res) => { +// res.send(dataNums[2]); +// }); +// app.get("/tickets", (req, res) => { +// res.send(dataNums[3]); +// }); +// }); diff --git a/server/routes/dataRoutes.js b/server/routes/dataRoutes.js new file mode 100644 index 0000000..51e4e57 --- /dev/null +++ b/server/routes/dataRoutes.js @@ -0,0 +1,21 @@ +const express = require("express"); +const router = express.Router(); +let { + getDate, + getComments, + getTasks, + getOrders, + getTickets +} = require("../controllers/dataController"); + +router.get("/dateTime", getDate); + +router.get("/newComments", getComments); + +router.get("/newTasks", getTasks); + +router.get("/newOrders", getOrders); + +router.get("/tickets", getTickets); + +module.exports = router; diff --git a/server/routes/foxRoutes.js b/server/routes/foxRoutes.js new file mode 100644 index 0000000..ca3a23d --- /dev/null +++ b/server/routes/foxRoutes.js @@ -0,0 +1,7 @@ +const express = require("express"); +const router = express.Router(); +let { getFox } = require("../controllers/fox.js"); + +router.get("/", getFox); + +module.exports = router; diff --git a/server/routes/messageRoutes.js b/server/routes/messageRoutes.js new file mode 100644 index 0000000..e69de29 diff --git a/server/routes/orderRoutes.js b/server/routes/orderRoutes.js new file mode 100644 index 0000000..e69de29 diff --git a/server/routes/taskRoutes.js b/server/routes/taskRoutes.js new file mode 100644 index 0000000..e69de29 From d6240731a5b3c6d0c700aa072680178fb2b7f613 Mon Sep 17 00:00:00 2001 From: alaynapuck28 Date: Sat, 17 Aug 2019 13:41:18 -0500 Subject: [PATCH 2/3] messages complete --- README.md | 2 +- server/controllers/messages.js | 18 +++++++++++ server/index.js | 56 ++-------------------------------- server/models/messageModels.js | 12 ++++++++ server/routes/messageRoutes.js | 9 ++++++ 5 files changed, 43 insertions(+), 54 deletions(-) create mode 100644 server/models/messageModels.js diff --git a/README.md b/README.md index be2d0d5..6624aef 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Your company's front end team has completed a business dashboard requested by ma - connect to your database - serve static files from the public folder -### Routes +### Routes-done - create get routes. - look at data.csv. read this file and pull the information out of it diff --git a/server/controllers/messages.js b/server/controllers/messages.js index e69de29..90edce7 100644 --- a/server/controllers/messages.js +++ b/server/controllers/messages.js @@ -0,0 +1,18 @@ +let Message = require("../models/messageModels"); + +exports.list = function list(req, res) { + Message.find((err, m) => { + return res.json(m); + }); +}; + +exports.create = function create(req, res) { + let item = { + id: req.body.id, + name: req.body.name, + date: req.body.date, + message: req.body.message + }; + let newMessage = new Message(item); + newMessage.save(); +}; diff --git a/server/index.js b/server/index.js index ee5ae48..79a5e2e 100644 --- a/server/index.js +++ b/server/index.js @@ -7,18 +7,17 @@ mongoose.connect( { useNewUrlParser: true } ); //routes -// let dataRoute = require("./routes/dateRoute"); - app.use(bodyParser.json()); app.use(express.static("public")); let dataRoutes = require("./routes/dataRoutes"); -var foxRoutes = require("./routes/foxRoutes"); +let foxRoutes = require("./routes/foxRoutes"); +let messageRoutes = require("./routes/messageRoutes"); app.use(dataRoutes); // app.use("/tasks", taskRoutes) // app.use("/orders", orderRoutes) -// app.use("/messages", messageRoutes) +app.use("/messages", messageRoutes); app.use("/foxes", foxRoutes); app.listen(3000, err => { @@ -27,52 +26,3 @@ app.listen(3000, err => { } console.log("Web server is now listening for messages on port", 3000); }); - -// var messageRoutes= require("./routes/messageRoutes") -// var orderRoutes = require("./routes/orderRoutes") -// var taskRoutes = require("./routes/taskRoutes") - -//*********** */broken code that won't read the csv :(********** -// const fs = require("fs"); - -// fs.readFile(csvFilePath, "utf8", (err, data) => { -// // if (err) throw err; -// // console.log(data); -// const dataSent = data.split("\n"); -// const dataNums = dataSent[1].split(","); -// }); -// const fs = require("fs"); -// var content; -// First I want to read the file -// fs.readFile("./data.csv", function read(err, data) { -// if (err) { -// throw err; -// } -// content = data; - -// // Invoke the next step here however you like -// console.log(content); // Put all of the code here (not the best solution) -// processFile(); // Or put the next step in a function and invoke it -// }); - -// function processFile() { -// console.log(content); -// } - -// app.get("/dateTime", (req, res) => { -// let d = new Date(); -// res.send(d); -// }); -// app.get("/newComments", (req, res) => { -// res.send(dataNums[0]); -// }); -// app.get("/newTasks", (req, res) => { -// res.send(dataNums[1]); -// }); -// app.get("/newOrders", (req, res) => { -// res.send(dataNums[2]); -// }); -// app.get("/tickets", (req, res) => { -// res.send(dataNums[3]); -// }); -// }); diff --git a/server/models/messageModels.js b/server/models/messageModels.js new file mode 100644 index 0000000..058760a --- /dev/null +++ b/server/models/messageModels.js @@ -0,0 +1,12 @@ +const mongoose = require("mongoose"); + +let messagesSchema = new mongoose.Schema({ + id: Number, + name: String, + date: String, + message: String +}); + +let Message = mongoose.model("Message", messagesSchema); + +module.exports = Message; diff --git a/server/routes/messageRoutes.js b/server/routes/messageRoutes.js index e69de29..637669d 100644 --- a/server/routes/messageRoutes.js +++ b/server/routes/messageRoutes.js @@ -0,0 +1,9 @@ +const express = require("express"); +const router = express.Router(); +let { create, list } = require("../controllers/messages"); + +router.post("/", create); + +router.get("/", list); + +module.exports = router; From 1f87afafd8a03d48df7d50fa072cd322b9db516b Mon Sep 17 00:00:00 2001 From: alaynapuck28 Date: Sat, 17 Aug 2019 15:10:21 -0500 Subject: [PATCH 3/3] database updated --- server/state.js | 321 ++++++++++++++++++++++++++---------------------- 1 file changed, 177 insertions(+), 144 deletions(-) diff --git a/server/state.js b/server/state.js index 3830493..5aff039 100644 --- a/server/state.js +++ b/server/state.js @@ -1,151 +1,184 @@ -export default { +module.exports = { dateTime: "Yesterday at 4:32 PM", newComments: 23, newTasks: 12, newOrders: 124, tickets: 13, taskItem: "Calendar updated", - tasks: [{ - id: 1, - task: "VDI", - date: "11/4/2016" - }, { - id: 2, - task: "Rugby", - date: "9/19/2016" - }, { - id: 3, - task: "Cardiac Rhythm Management", - date: "3/4/2017" - }, { - id: 4, - task: "ODM management", - date: "11/2/2016" - }, { - id: 5, - task: "RV", - date: "12/24/2016" - }, { - id: 6, - task: "Microsoft Publisher", - date: "12/29/2016" - }, { - id: 7, - task: "Public Administration", - date: "5/5/2016" - }, { - id: 8, - task: "DBMS", - date: "10/13/2016" - }, { - id: 9, - task: "Hypnosis", - date: "1/18/2017" - }, { - id: 10, - task: "Vendor Relations", - date: "3/6/2017" - }], - messages: [{ - id: 1, - name: "Lotti Huikerby", - date: "2/6/2017", - message: "Synchronised grid-enabled adapter" - }, { - id: 2, - name: "Adlai Paterno", - date: "9/2/2016", - message: "Centralized clear-thinking standardization" - }, { - id: 3, - name: "Phillipp Gauden", - date: "9/28/2016", - message: "Proactive systematic focus group" - }, { - id: 4, - name: "Ethelyn Oleksiak", - date: "4/8/2017", - message: "Exclusive 24 hour initiative" - }, { - id: 5, - name: "Tally Braunstein", - date: "9/26/2016", - message: "Integrated global support" - }, { - id: 6, - name: "Fredra Seathwright", - date: "2/13/2017", - message: "Assimilated systematic strategy" - }, { - id: 7, - name: "Sophie Berntssen", - date: "12/9/2016", - message: "Universal mobile info-mediaries" - }, { - id: 8, - name: "Saleem Maydwell", - date: "4/8/2017", - message: "Multi-tiered methodical methodology" - }, { - id: 9, - name: "Meyer O'Deoran", - date: "9/26/2016", - message: "Re-contextualized motivating open architecture" - }, { - id: 10, - name: "Darcee Mattheis", - date: "10/17/2016", - message: "Visionary modular open system" - }], - orders: [{ - id: 1, - orderDate: "9/19/2016", - orderTime: "6:44 AM", - amount: "$674.65" - }, { - id: 2, - orderDate: "7/20/2016", - orderTime: "1:37 PM", - amount: "$2023.28" - }, { - id: 3, - orderDate: "12/18/2016", - orderTime: "4:28 PM", - amount: "$7717.77" - }, { - id: 4, - orderDate: "7/26/2016", - orderTime: "8:47 AM", - amount: "$1370.69" - }, { - id: 5, - orderDate: "12/24/2016", - orderTime: "8:22 AM", - amount: "$6184.77" - }, { - id: 6, - orderDate: "9/17/2016", - orderTime: "8:10 PM", - amount: "$4413.90" - }, { - id: 7, - orderDate: "8/6/2016", - orderTime: "12:54 AM", - amount: "$3498.37" - }, { - id: 8, - orderDate: "6/10/2016", - orderTime: "8:56 PM", - amount: "$9498.33" - }, { - id: 9, - orderDate: "7/24/2016", - orderTime: "5:13 PM", - amount: "$683.18" - }, { - id: 10, - orderDate: "9/13/2016", - orderTime: "3:51 AM", - amount: "$39.35" - }] + tasks: [ + { + id: 1, + task: "VDI", + date: "11/4/2016" + }, + { + id: 2, + task: "Rugby", + date: "9/19/2016" + }, + { + id: 3, + task: "Cardiac Rhythm Management", + date: "3/4/2017" + }, + { + id: 4, + task: "ODM management", + date: "11/2/2016" + }, + { + id: 5, + task: "RV", + date: "12/24/2016" + }, + { + id: 6, + task: "Microsoft Publisher", + date: "12/29/2016" + }, + { + id: 7, + task: "Public Administration", + date: "5/5/2016" + }, + { + id: 8, + task: "DBMS", + date: "10/13/2016" + }, + { + id: 9, + task: "Hypnosis", + date: "1/18/2017" + }, + { + id: 10, + task: "Vendor Relations", + date: "3/6/2017" + } + ], + messages: [ + { + id: 1, + name: "Lotti Huikerby", + date: "2/6/2017", + message: "Synchronised grid-enabled adapter" + }, + { + id: 2, + name: "Adlai Paterno", + date: "9/2/2016", + message: "Centralized clear-thinking standardization" + }, + { + id: 3, + name: "Phillipp Gauden", + date: "9/28/2016", + message: "Proactive systematic focus group" + }, + { + id: 4, + name: "Ethelyn Oleksiak", + date: "4/8/2017", + message: "Exclusive 24 hour initiative" + }, + { + id: 5, + name: "Tally Braunstein", + date: "9/26/2016", + message: "Integrated global support" + }, + { + id: 6, + name: "Fredra Seathwright", + date: "2/13/2017", + message: "Assimilated systematic strategy" + }, + { + id: 7, + name: "Sophie Berntssen", + date: "12/9/2016", + message: "Universal mobile info-mediaries" + }, + { + id: 8, + name: "Saleem Maydwell", + date: "4/8/2017", + message: "Multi-tiered methodical methodology" + }, + { + id: 9, + name: "Meyer O'Deoran", + date: "9/26/2016", + message: "Re-contextualized motivating open architecture" + }, + { + id: 10, + name: "Darcee Mattheis", + date: "10/17/2016", + message: "Visionary modular open system" + } + ], + orders: [ + { + id: 1, + orderDate: "9/19/2016", + orderTime: "6:44 AM", + amount: "$674.65" + }, + { + id: 2, + orderDate: "7/20/2016", + orderTime: "1:37 PM", + amount: "$2023.28" + }, + { + id: 3, + orderDate: "12/18/2016", + orderTime: "4:28 PM", + amount: "$7717.77" + }, + { + id: 4, + orderDate: "7/26/2016", + orderTime: "8:47 AM", + amount: "$1370.69" + }, + { + id: 5, + orderDate: "12/24/2016", + orderTime: "8:22 AM", + amount: "$6184.77" + }, + { + id: 6, + orderDate: "9/17/2016", + orderTime: "8:10 PM", + amount: "$4413.90" + }, + { + id: 7, + orderDate: "8/6/2016", + orderTime: "12:54 AM", + amount: "$3498.37" + }, + { + id: 8, + orderDate: "6/10/2016", + orderTime: "8:56 PM", + amount: "$9498.33" + }, + { + id: 9, + orderDate: "7/24/2016", + orderTime: "5:13 PM", + amount: "$683.18" + }, + { + id: 10, + orderDate: "9/13/2016", + orderTime: "3:51 AM", + amount: "$39.35" + } + ] };