Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var mysql = require('mysql');
- var serverDB = (function(connectionData, callback) {
- var queries = {
- markRead : "UPDATE messages SET readable = TRUE WHERE message_id = ?",
- getHistory : "SELECT * FROM messages WHERE (date_time >= ?) AND ((from_login = ? AND to_login = ?) OR (from_login = ? AND to_login = ?) ) ORDER BY date_time",
- getUG : "SELECT * FROM users; SELECT * FROM groups",
- login : "SELECT 1 FROM users WHERE login = ? AND password = ?",
- userExists : "SELECT 1 FROM users WHERE login = ?",
- insertMess : "INSERT INTO messages SET ?",
- newSession : "INSERT INTO sessions SET ?",
- delSession : "DELETE FROM sessions WHERE session_id = ?",
- ldSessions : "SELECT login, session_id, expires FROM sessions"
- };
- var connData = connectionData;
- connData.multipleStatements = true;
- var mysqlConnection = mysql.createConnection (connectionData);
- mysqlConnection.connect ( function (error) {
- if (error)
- throw error;
- console.log ('Successfully connected to MySQL server.');
- if (callback)
- callback(this);
- });
- function _messageSetRead(id, callback) {
- var query = util.format (queries.markRead, id);
- mysqlConnection.query (query, function (err) {
- if (err)
- throw err;
- if (callback)
- callback();
- });
- }
- function _getHistory (loginFrom, loginTo, dateAfter, callback) {
- mysqlConnection.query (
- queries.getHistory,
- [dateAfter, loginFrom, loginTo, loginTo, loginFrom],
- function (err, rows) {
- if (err)
- throw err;
- if (callback)
- callback (rows);
- }
- );
- }
- function _getUG(callback) {
- mysqlConnection.query (queries.getUG, function (err, result) {
- if (err)
- throw err;
- if (callback)
- callback (result[0], result[1]);
- });
- }
- function _checkUser(login, password, callback){
- mysqlConnection.query (queries.login, [login, password], function (err, result) {
- if (err)
- throw err;
- if (callback)
- callback (result.length !== 0);
- });
- }
- function _insertMessage (from, to, message, time, callback){
- var insertSet = {
- 'from_login' : from,
- 'to_login' : to,
- 'message' : message,
- 'date_time' : time
- };
- mysqlConnection.query (queries.insertMess, insertSet, function (err, result) {
- if (err)
- throw err;
- if (callback)
- callback (result.id);
- });
- }
- function _userExists (login, callback){
- mysqlConnection.query (queries.userExists, login, function (err, result) {
- if(err)
- throw err;
- if (callback)
- callback (result.length !== 0);
- });
- }
- function _insertNewSession (login, expires, session_id, callback){
- var sessionDesc = {
- 'login' : login,
- 'session_id' : session_id,
- 'expires' : expires
- };
- mysqlConnection.query (queries.newSession, sessionDesc, function (err, result) {
- if(err)
- throw err;
- if (callback)
- callback ();
- });
- }
- function _removeSession (session_id, callback){
- mysqlConnection.query (queries.delSession, session_id, function (err, result) {
- if(err)
- throw err;
- if (callback)
- callback ();
- });
- }
- function _loadSessions () {
- mysqlConnection.query (queries.ldSessions, function (err, result) {
- if(err)
- throw err;
- if (callback)
- callback (result);
- });
- }
- return {
- messageSetRead : _messageSetRead,
- getHistory : _getHistory,
- getUG : _getUG,
- checkUser : _checkUser,
- insertMessage : _insertMessage,
- userExists : _userExists,
- insertNewSession : _insertNewSession,
- removeSession : _removeSession
- loadSessions : _loadSessions,
- };
- // ADMIN FUNCTIONS
- })({
- host : '178.62.178.14',
- user : 'root',
- password : 'databasepassword',
- database : 'corporative_messenger'
- });
- var sessionManager;
- function ChatClient (login, clientSocket, server) {
- this.login = login;
- this.server = server;
- this.websocket = clientSocket;
- this.session = null;
- }
- ChatClient.prototype.checkSession = function (message, callback){
- var userSessionId =
- if (!session || session.session_id != message.session_id)
- this.sessionExpired (callback);
- else if (callback)
- callback();
- }
- ChatClient.prototype.sendData = function (data, callback){
- if (this.websocket)
- this.websocket.send (JSON.stringify (data), function (error) {
- if (error)
- throw error;
- if (callback)
- callback();
- });
- }
- ChatClient.prototype.obtainSession = function (login, password, callback) {
- sessionManager.obtainSession (login, password, function (session) {
- this.session = session;
- this.sendData ({
- type : 'SessionObtained',
- session: session,
- }, callback);
- });
- }
- ChatClient.prototype.sessionExpired = function (callback) {
- this.sendData ({
- type: 'SessionExpired'
- }, callback);
- }
- ChatClient.prototype.sendMessage = function (to, message, callback) {
- var currentTime = new Date();
- serverDB.insertMessage (this.login, to, message, currentTime, function (id) {
- var messageData = {
- type: 'RenderMessageRequest',
- id: id,
- from: this.login,
- to: to,
- message: message,
- date_time: currentTime,
- readable: false
- };
- this.sendData(messageData, function (){
- server.sendTo (msg.to, messageData, callback);
- });
- });
- }
- ChatClient.prototype.historyRequest = function (loginTo, dateAfter, callback) {
- serverDB.getHistory (this.login, loginTo, dateAfter, function (history){
- this.sendData ({
- type: 'HistoryRequestAnswer',
- answer: history
- }, callback);
- });
- }
- ChatClient.prototype.messageRead = function (id, callback) {
- serverDB.messageSetRead (id, callback);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement