From e981898c40f67f137c495b62020cd9e2e93fcf9c Mon Sep 17 00:00:00 2001 From: talksik Date: Sat, 4 Aug 2018 14:44:36 -0700 Subject: [PATCH] Adding in users table in db and working on optimizations --- app.js | 68 +++++++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/app.js b/app.js index 6284ece..a0ad77f 100644 --- a/app.js +++ b/app.js @@ -25,7 +25,7 @@ function handleDisconnect() { con.connect(function(err) { // The server is either down if(err) { // or restarting (takes a while sometimes). - console.log('error when connecting to db:', err); + console.log('error when connecting to db...settingTimeout then connecting again'); setTimeout(handleDisconnect, 2000); // We introduce a delay before attempting to reconnect, } // to avoid a hot loop, and to allow our node script to }); // process asynchronous requests in the meantime. @@ -41,54 +41,58 @@ function handleDisconnect() { } handleDisconnect(); -app.get('/userid', function (req, res) { - con.query('SELECT max(userId) as userId from messages;', function (err, result, fields) { - if (err) throw err; - if (result) { - console.log(result[0].userId); - res.json({userId: result[0].userId + 1}); - } else { - res.json({userId: 1}); - } - }); -}); - io.on('connection', function (socket) { console.log('Client connected: ' + socket.id); - socket.on('initial', (position) => { - console.log(position.long + ' ' + position.lat); - //var sql = 'select * from messages where lng = 0'; - var sql = 'SELECT * FROM messages HAVING (6371393 * acos(cos(radians((?))) * cos(radians(lat)) * cos(radians(lng) - radians((?))) + sin(radians((?))) * sin(radians(lat))) < 100) ORDER BY id;' - con.query(sql, [position.lat, position.long, position.lat], function (err, result, fields) { + /* + * Client sends a request with its position and avatar link + * Returns the inital messages and assigned user_id + */ + socket.on('initial', (input) => { + console.log('Position: ' + input.position.long + ' ' + input.position.lat); + let long = input.position.long; + let lat = input.position.lat; + let avatar = input.avatar; + + var sql = 'SELECT * FROM messages, users WHERE messages.user_id = users.id HAVING (6371393 * acos(cos(radians((?))) * cos(radians(messages.lat)) * cos(radians(messages.lng) - radians((?))) + sin(radians((?))) * sin(radians(messages.lat))) < 200) ORDER BY messages.id;' + con.query(sql, [lat, long, lat], function (err, result, fields) { if (err) throw err; + + console.log(result); socket.emit('initMessages', result); console.log('sent all initial messages'); }); + + var newUserSql = 'INSERT INTO users (avatar) VALUES (?)'; + con.query(newUserSql, [avatar], function (err, result, fields) { + if (err) throw err; + if (result) { + var user_id = result.insertId; + console.log("User id given: " + user_id); + + socket.emit("userId", {userId: user_id}); + } else { + socket.emit("userId", {userId: 1}); + } + }); }); - //io.on('test', () => console.log('worked~')); // test with web page - socket.on('newMessage', function(msg) { - var sql = "INSERT INTO messages (userId, text, createdAt, lng, lat, avatar) VALUES (?, ?, ?, ?, ?, ?)"; + var sql = "INSERT INTO messages (lat, lng, text, user_id) VALUES (?, ?, ?, ?)"; var currTime = new Date().toString(); - con.query(sql, [msg.userId, msg.text, currTime, msg.lng, msg.lat, msg.avatar], function(err, result) { + con.query(sql, [msg.lat, msg.long, msg.text, msg.user_id], function(err, result, fields) { if (err) throw err; - console.log('Message sent to db!'); - var msgId = 0; - con.query('SELECT LAST_INSERT_ID()', function(err, result) { - if(err) throw err; - msgId = result; - console.log(msgId); - }); + var msgId = result.insertId; + console.log('Message with id ' + msgId + ' inserted!'); + var uploadedMsg = { id: msgId, - userId: msg.userId, + user_id: msg.user_id, text: msg.text, - createdAt: currTime, - lng: msg.lng, + created: currTime, + long: msg.long, lat: msg.lat, avatar: msg.avatar };