Loading events.js 0 → 100644 +200 −0 Original line number Original line Diff line number Diff line const express = require('express'); function createRouter(db) { const router = express.Router(); function isMapIdAndNameNotNull(req) { const mapId = req.body.mapId; const name = req.body.name; return mapId != null && name != null; } function isVoteRequestValid(req) { const userId = req.body.userId; const vote = req.body.vote; return userId != null && vote != null && isMapIdAndNameNotNull(req); } function isgetMapInfoValid(req) { const userId = req.body.userId; return userId != null && isMapIdAndNameNotNull(req); } const hasMap = function hasMap(req, res, next) { const mapId = req.body.mapId; if (isMapIdAndNameNotNull(req)) { const sql = 'SELECT count(*) as Maps From Map WHERE mapId = \"'+mapId+'\";'; console.log('Map Select: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in hasMap'}); } else { numberResults = results[0].Maps; console.log(numberResults); if (numberResults === 1) next(); else if (numberResults === 0) addMap(req, res, next); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'There are multiple maps with the same id'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'JSON-Parameter are not valid'}); } }; const addMap = function addMap(req, res, next) { const mapId = req.body.mapId; const name = req.body.name; const sql = 'INSERT INTO Map (mapId, name) VALUES (\"'+mapId+'\", \"'+name+'\");'; console.log('Map Insert: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in addMap'}); } else { if (results.affectedRows === 1) next(); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in insertMap'}); } }); }; const hasVote = function hasVote(req, res, next) { if (isVoteRequestValid(req)) { const userId = req.body.userId; const sql = 'SELECT userId FROM Vote WHERE userId = \"'+ userId + '\";'; console.log('Map Insert: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in hasVote'}); } else { if (results.length === 0) insertVote(req, res, next); else if (results.length === 1) updateVote(req, res, next); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'too many votes by user'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const insertVote = function insertVote(req, res, next) { if (isVoteRequestValid(req)) { const userId = req.body.userId; const mapId = req.body.mapId; const vote = req.body.vote; const sql = 'INSERT INTO Vote (userId, mapId, vote) VALUES (\"'+ userId + '\", \"'+ mapId + '\", \"' + vote +'\");'; console.log('Insert Vote: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in insertVote'}); } else { if (results.affectedRows === 1) next(); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in insertVote'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const updateVote = function updateVote(req, res, next) { if (isVoteRequestValid(req)) { const userId = req.body.userId; const mapId = req.body.mapId; const vote = req.body.vote; const sql = 'UPDATE Vote SET userId = \"'+ userId + '\", mapId = \"'+ mapId + '\", vote = \"' + vote +'\" WHERE userID = \"'+ userId +'\";'; console.log('Update Vote: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in updateVote'}); } else { if (results.affectedRows === 1) next(); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in updateVote'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const getMapInfo = function getMapInfo(req, res) { if (isVoteRequestValid(req)) { const mapId = req.body.mapId; const vote = req.body.vote; const sql = 'SELECT count(userId) as votes, round(avg(vote)) as average FROM Vote WHERE mapId LIKE \"'+ mapId + '\";'; console.log('getMapInfo: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getMapInfo'}); } else { if (results.length === 1) { const average = results[0].average; const votes = results[0].votes; if (average !== null && votes !== null) { res.header('Access-Control-Allow-Origin', "*").status(500).json({votes: votes, average: average, vote: vote}); return; } } res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getMapInfo'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const getVote = function getVote(req, res) { if (isgetMapInfoValid(req)) { const mapId = req.body.mapId; const userId = req.body.userId; const sql = 'SELECT vote FROM Vote v2 WHERE mapId LIKE \"'+ mapId + '\" AND userId LIKE \"' + userId + '\";'; console.log('Update Vote: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getVote'}); } else { if (results.length === 1) { const vote = results[0].vote; if (vote !== null) { req.body.vote = vote; getMapInfo(req, res); return; } } res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getVote'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; // the routes are defined here //Return all Sessions (Not neccesary) router.post('/addMap', [hasMap, hasVote, getMapInfo]); router.post('/getMapInfo', [getVote]); return router; } module.exports = createRouter; index.js +6 −6 Original line number Original line Diff line number Diff line Loading @@ -3,14 +3,14 @@ const express = require('express'); const cors = require('cors'); const cors = require('cors'); const bodyParser = require('body-parser'); const bodyParser = require('body-parser'); const mysql = require('mysql'); const mysql = require('mysql'); //const events = require('./events'); const events = require('./events'); /*const connection = mysql.createConnection({ const connection = mysql.createConnection({ host : '192.168.0.50', host : '192.168.0.50', port : '3307', port : '3307', user : '--', user : 'votingApp', password : '--', password : 'R0b0TecDev!', database : '--', database : 'Voting', multipleStatements: true, multipleStatements: true, }); }); Loading @@ -25,4 +25,4 @@ const app = express() app.listen(port, () => { app.listen(port, () => { console.log(`Express server listening on port ${port}`); console.log(`Express server listening on port ${port}`); });*/ }); Loading
events.js 0 → 100644 +200 −0 Original line number Original line Diff line number Diff line const express = require('express'); function createRouter(db) { const router = express.Router(); function isMapIdAndNameNotNull(req) { const mapId = req.body.mapId; const name = req.body.name; return mapId != null && name != null; } function isVoteRequestValid(req) { const userId = req.body.userId; const vote = req.body.vote; return userId != null && vote != null && isMapIdAndNameNotNull(req); } function isgetMapInfoValid(req) { const userId = req.body.userId; return userId != null && isMapIdAndNameNotNull(req); } const hasMap = function hasMap(req, res, next) { const mapId = req.body.mapId; if (isMapIdAndNameNotNull(req)) { const sql = 'SELECT count(*) as Maps From Map WHERE mapId = \"'+mapId+'\";'; console.log('Map Select: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in hasMap'}); } else { numberResults = results[0].Maps; console.log(numberResults); if (numberResults === 1) next(); else if (numberResults === 0) addMap(req, res, next); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'There are multiple maps with the same id'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'JSON-Parameter are not valid'}); } }; const addMap = function addMap(req, res, next) { const mapId = req.body.mapId; const name = req.body.name; const sql = 'INSERT INTO Map (mapId, name) VALUES (\"'+mapId+'\", \"'+name+'\");'; console.log('Map Insert: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in addMap'}); } else { if (results.affectedRows === 1) next(); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in insertMap'}); } }); }; const hasVote = function hasVote(req, res, next) { if (isVoteRequestValid(req)) { const userId = req.body.userId; const sql = 'SELECT userId FROM Vote WHERE userId = \"'+ userId + '\";'; console.log('Map Insert: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in hasVote'}); } else { if (results.length === 0) insertVote(req, res, next); else if (results.length === 1) updateVote(req, res, next); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'too many votes by user'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const insertVote = function insertVote(req, res, next) { if (isVoteRequestValid(req)) { const userId = req.body.userId; const mapId = req.body.mapId; const vote = req.body.vote; const sql = 'INSERT INTO Vote (userId, mapId, vote) VALUES (\"'+ userId + '\", \"'+ mapId + '\", \"' + vote +'\");'; console.log('Insert Vote: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in insertVote'}); } else { if (results.affectedRows === 1) next(); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in insertVote'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const updateVote = function updateVote(req, res, next) { if (isVoteRequestValid(req)) { const userId = req.body.userId; const mapId = req.body.mapId; const vote = req.body.vote; const sql = 'UPDATE Vote SET userId = \"'+ userId + '\", mapId = \"'+ mapId + '\", vote = \"' + vote +'\" WHERE userID = \"'+ userId +'\";'; console.log('Update Vote: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in updateVote'}); } else { if (results.affectedRows === 1) next(); else res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in updateVote'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const getMapInfo = function getMapInfo(req, res) { if (isVoteRequestValid(req)) { const mapId = req.body.mapId; const vote = req.body.vote; const sql = 'SELECT count(userId) as votes, round(avg(vote)) as average FROM Vote WHERE mapId LIKE \"'+ mapId + '\";'; console.log('getMapInfo: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getMapInfo'}); } else { if (results.length === 1) { const average = results[0].average; const votes = results[0].votes; if (average !== null && votes !== null) { res.header('Access-Control-Allow-Origin', "*").status(500).json({votes: votes, average: average, vote: vote}); return; } } res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getMapInfo'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; const getVote = function getVote(req, res) { if (isgetMapInfoValid(req)) { const mapId = req.body.mapId; const userId = req.body.userId; const sql = 'SELECT vote FROM Vote v2 WHERE mapId LIKE \"'+ mapId + '\" AND userId LIKE \"' + userId + '\";'; console.log('Update Vote: ', sql); db.query( sql, (error, results) => { if (error) { console.log(error); res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getVote'}); } else { if (results.length === 1) { const vote = results[0].vote; if (vote !== null) { req.body.vote = vote; getMapInfo(req, res); return; } } res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'error in getVote'}); } }); } else { res.header('Access-Control-Allow-Origin', "*").status(500).json({status: 'Vote Request is not valid'}); } }; // the routes are defined here //Return all Sessions (Not neccesary) router.post('/addMap', [hasMap, hasVote, getMapInfo]); router.post('/getMapInfo', [getVote]); return router; } module.exports = createRouter;
index.js +6 −6 Original line number Original line Diff line number Diff line Loading @@ -3,14 +3,14 @@ const express = require('express'); const cors = require('cors'); const cors = require('cors'); const bodyParser = require('body-parser'); const bodyParser = require('body-parser'); const mysql = require('mysql'); const mysql = require('mysql'); //const events = require('./events'); const events = require('./events'); /*const connection = mysql.createConnection({ const connection = mysql.createConnection({ host : '192.168.0.50', host : '192.168.0.50', port : '3307', port : '3307', user : '--', user : 'votingApp', password : '--', password : 'R0b0TecDev!', database : '--', database : 'Voting', multipleStatements: true, multipleStatements: true, }); }); Loading @@ -25,4 +25,4 @@ const app = express() app.listen(port, () => { app.listen(port, () => { console.log(`Express server listening on port ${port}`); console.log(`Express server listening on port ${port}`); });*/ });