From 57c4bf2c38700a71bf05558de5e1d6066f0c116b Mon Sep 17 00:00:00 2001 From: Oliver Boehlk Date: Fri, 29 May 2020 19:26:11 +0200 Subject: [PATCH] add amount endpoints --- backend/index.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/backend/index.js b/backend/index.js index b400f1f..8b8ed01 100644 --- a/backend/index.js +++ b/backend/index.js @@ -226,6 +226,33 @@ app.get('/API/price/day', function (req, res) { return res.status(status.BAD_REQUEST).send("invalid data provided"); }); +app.get('/API/amount/day', function (req, res) { + const kind = parseInt(req.query.kind); + if (Number.isInteger(kind)) { + //Mock Data: + if (kind === -1 || DEBUG) return res.send(mockDataDay); + + if (kind >= 1 && kind <= 113) { + var dayend = new Date().toMysqlFormat(); + var daybegin = new Date(); + daybegin.setDate(daybegin.getDate() - 1); + daybegin = daybegin.toMysqlFormat(); + const querystring = `SELECT time, quality, amount FROM marketcap WHERE kind = ${kind} AND time > "${daybegin}" AND time < "${dayend}" ORDER BY time, quality`; + connection.query(querystring, function (error, results, fields) { + if (error) { + return res.status(status.INTERNAL_SERVER_ERROR).send("database connection failed"); + } + return res.send(results); + }); + } + else + return res.status(status.BAD_REQUEST).send("invalid data range provided"); + + } + else + return res.status(status.BAD_REQUEST).send("invalid data provided"); +}); + app.get('/API/price/week', function (req, res) { const kind = parseInt(req.query.kind); if (Number.isInteger(kind)) { @@ -259,6 +286,39 @@ app.get('/API/price/week', function (req, res) { return res.status(status.BAD_REQUEST).send("invalid data provided"); }); +app.get('/API/amount/week', function (req, res) { + const kind = parseInt(req.query.kind); + if (Number.isInteger(kind)) { + //Mock Data: + if (kind === -1 || DEBUG) return res.send(mockDataWeek); + + if (kind >= 1 && kind <= 113) { + var day = new Date(); + day.setDate(day.getDate() - 6) + var querying = ""; + for (let i = 0; i < 7; i++) { + let currentday = day.toMysqlFormat().split(" ")[0]; + querying += `SELECT "${currentday + " 3:00:00"}" as time,kind,quality,AVG(amount) as amount FROM marketcap WHERE kind = ${kind} AND TIME > "${currentday} 00:00:00" AND TIME <= "${currentday} 05:59:59" GROUP BY kind,quality UNION `; + querying += `SELECT "${currentday + " 09:00:00"}" as time,kind,quality,AVG(amount) as amount FROM marketcap WHERE kind = ${kind} AND TIME > "${currentday} 6:00:00" AND TIME <= "${currentday} 11:59:59" GROUP BY kind,quality UNION `; + querying += `SELECT "${currentday + " 15:00:00"}" as time,kind,quality,AVG(amount) as amount FROM marketcap WHERE kind = ${kind} AND TIME > "${currentday} 12:00:00" AND TIME <= "${currentday} 17:59:59" GROUP BY kind,quality UNION `; + querying += `SELECT "${currentday + " 21:00:00"}" as time,kind,quality,AVG(amount) as amount FROM marketcap WHERE kind = ${kind} AND TIME > "${currentday} 18:00:00" AND TIME <= "${currentday} 23:59:59" GROUP BY kind,quality ${i === 6 ? "" : "UNION"} `; + day.setDate(day.getDate() + 1); + } + connection.query(querying, function (error, results, fields) { + if (error) { + return res.status(status.INTERNAL_SERVER_ERROR).send("database connection failed"); + } + return res.send(results); + }); + } + else + return res.status(status.BAD_REQUEST).send("invalid data range provided"); + + } + else + return res.status(status.BAD_REQUEST).send("invalid data provided"); +}); + app.get('/API/price/month', function (req, res) { const kind = parseInt(req.query.kind); if (Number.isInteger(kind)) { @@ -289,6 +349,36 @@ app.get('/API/price/month', function (req, res) { return res.status(status.BAD_REQUEST).send("invalid data provided"); }); +app.get('/API/amount/month', function (req, res) { + const kind = parseInt(req.query.kind); + if (Number.isInteger(kind)) { + //Mock Data: + if (kind === -1 || DEBUG) return res.send(mockDataMonth); + + if (kind >= 1 && kind <= 113) { + var day = new Date(); + day.setDate(day.getDate() - 29); + var querying = ""; + for (let i = 0; i < 30; i++) { + let currentday = day.toMysqlFormat().split(" ")[0]; + querying += `SELECT "${currentday}" as time,kind,quality,AVG(amount) as amount FROM marketcap WHERE kind = ${kind} AND TIME >= "${currentday} 00:00:00" AND TIME <= "${currentday} 23:59:59" GROUP BY kind,quality ${i === 29 ? "" : "UNION"} `; + day.setDate(day.getDate() + 1); + } + connection.query(querying, function (error, results, fields) { + if (error) { + return res.status(status.INTERNAL_SERVER_ERROR).send("database connection failed"); + } + return res.send(results); + }); + } + else + return res.status(status.BAD_REQUEST).send("invalid data range provided"); + + } + else + return res.status(status.BAD_REQUEST).send("invalid data provided"); +}); + app.get('/API/resourcelist', function (req, res) { return res.send(resourceList); });