Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mysql = require('mysql');
  2.  
  3. var serverDB = (function(connectionData, callback) {
  4.     var queries = {
  5.         markRead    : "UPDATE messages SET readable = TRUE WHERE message_id = ?",
  6.         getHistory  : "SELECT * FROM messages WHERE (date_time >= ?) AND ((from_login = ? AND to_login = ?) OR (from_login = ? AND to_login = ?) ) ORDER BY date_time",
  7.         getUG       : "SELECT * FROM users; SELECT * FROM groups",
  8.         login       : "SELECT 1 FROM users WHERE login = ? AND password = ?",
  9.         userExists  : "SELECT 1 FROM users WHERE login = ?",
  10.         insertMess  : "INSERT INTO messages SET ?",
  11.         newSession  : "INSERT INTO sessions SET ?",
  12.         delSession  : "DELETE FROM sessions WHERE session_id = ?",
  13.         ldSessions  : "SELECT login, session_id, expires FROM sessions"
  14.     };
  15.  
  16.     var connData = connectionData;
  17.     connData.multipleStatements = true;
  18.    
  19.     var mysqlConnection = mysql.createConnection (connectionData);
  20.     mysqlConnection.connect ( function (error) {
  21.         if (error)
  22.             throw error;
  23.         console.log ('Successfully connected to MySQL server.');
  24.        
  25.         if (callback)
  26.             callback(this);
  27.     });
  28.    
  29.    
  30.     function _messageSetRead(id, callback) {
  31.         var query = util.format (queries.markRead, id);
  32.         mysqlConnection.query (query, function (err) {
  33.             if (err)
  34.                 throw err;
  35.             if (callback)
  36.                 callback();
  37.         });
  38.     }
  39.    
  40.     function _getHistory (loginFrom, loginTo, dateAfter, callback) {
  41.         mysqlConnection.query (
  42.                 queries.getHistory,
  43.                 [dateAfter, loginFrom, loginTo, loginTo, loginFrom],
  44.                 function (err, rows) {
  45.                     if (err)
  46.                         throw err;
  47.                     if (callback)
  48.                         callback (rows);
  49.                 }
  50.         );
  51.     }
  52.    
  53.     function _getUG(callback) {
  54.         mysqlConnection.query (queries.getUG, function (err, result) {
  55.             if (err)
  56.                 throw err;
  57.             if (callback)
  58.                 callback (result[0], result[1]);
  59.         });
  60.     }
  61.    
  62.     function _checkUser(login, password, callback){
  63.         mysqlConnection.query (queries.login, [login, password], function (err, result) {
  64.             if (err)
  65.                 throw err;
  66.             if (callback)
  67.                 callback (result.length !== 0);
  68.         });
  69.     }
  70.    
  71.     function _insertMessage (from, to, message, time, callback){
  72.         var insertSet = {
  73.             'from_login' : from,
  74.             'to_login' : to,
  75.             'message' : message,
  76.             'date_time' : time
  77.         }; 
  78.        
  79.         mysqlConnection.query (queries.insertMess, insertSet, function (err, result) {
  80.             if (err)
  81.                 throw err;
  82.             if (callback)
  83.                 callback (result.id);
  84.         });
  85.     }
  86.    
  87.     function _userExists (login, callback){
  88.         mysqlConnection.query (queries.userExists, login, function (err, result) {
  89.             if(err)
  90.                 throw err;
  91.             if (callback)
  92.                 callback (result.length !== 0);
  93.         });
  94.     }
  95.  
  96.     function _insertNewSession (login, expires, session_id, callback){
  97.         var sessionDesc = {
  98.             'login' : login,
  99.             'session_id' : session_id,
  100.             'expires' : expires
  101.         };
  102.  
  103.         mysqlConnection.query (queries.newSession, sessionDesc, function (err, result) {
  104.             if(err)
  105.                 throw err;
  106.             if (callback)
  107.                 callback ();
  108.         });
  109.     }
  110.  
  111.     function _removeSession (session_id, callback){
  112.         mysqlConnection.query (queries.delSession, session_id, function (err, result) {
  113.             if(err)
  114.                 throw err;
  115.             if (callback)
  116.                 callback ();
  117.         });
  118.     }
  119.  
  120.     function _loadSessions () {
  121.         mysqlConnection.query (queries.ldSessions, function (err, result) {
  122.             if(err)
  123.                 throw err;
  124.             if (callback)
  125.                 callback (result);
  126.         });
  127.     }
  128.    
  129.     return {
  130.         messageSetRead : _messageSetRead,
  131.         getHistory : _getHistory,
  132.         getUG : _getUG,
  133.         checkUser : _checkUser,
  134.         insertMessage : _insertMessage,
  135.         userExists : _userExists,
  136.         insertNewSession : _insertNewSession,
  137.         removeSession : _removeSession
  138.         loadSessions : _loadSessions,
  139.     };
  140.    
  141.     // ADMIN FUNCTIONS 
  142. })({
  143.      host     : '178.62.178.14',
  144.      user     : 'root',
  145.      password : 'databasepassword',
  146.      database : 'corporative_messenger'
  147. });
  148.  
  149. var sessionManager;
  150.  
  151. function ChatClient (login, clientSocket, server) {
  152.     this.login = login;
  153.     this.server = server;
  154.     this.websocket = clientSocket;
  155.     this.session = null;
  156. }
  157.  
  158. ChatClient.prototype.checkSession = function (message, callback){
  159.     var userSessionId =
  160.     if (!session || session.session_id != message.session_id)
  161.         this.sessionExpired (callback);
  162.     else if (callback)
  163.         callback();
  164. }
  165.  
  166. ChatClient.prototype.sendData = function (data, callback){
  167.     if (this.websocket)
  168.         this.websocket.send (JSON.stringify (data), function (error) {
  169.             if (error)
  170.                 throw error;
  171.             if (callback)
  172.                 callback();
  173.         });
  174. }
  175.  
  176. ChatClient.prototype.obtainSession = function (login, password, callback) {
  177.     sessionManager.obtainSession (login, password, function (session) {
  178.         this.session = session;
  179.         this.sendData ({
  180.             type : 'SessionObtained',
  181.             session: session,
  182.         }, callback);
  183.     });
  184. }
  185.  
  186. ChatClient.prototype.sessionExpired = function (callback) {
  187.     this.sendData ({
  188.         type: 'SessionExpired'            
  189.     }, callback);
  190. }
  191.  
  192. ChatClient.prototype.sendMessage = function (to, message, callback) {
  193.     var currentTime = new Date();
  194.     serverDB.insertMessage (this.login, to, message, currentTime, function (id) {
  195.         var messageData = {
  196.             type: 'RenderMessageRequest',
  197.             id:         id,
  198.             from:       this.login,
  199.             to:         to,
  200.             message:    message,
  201.             date_time:  currentTime,
  202.             readable:   false
  203.         };
  204.  
  205.         this.sendData(messageData, function (){
  206.             server.sendTo (msg.to, messageData, callback);
  207.         });
  208.     });
  209. }
  210.  
  211. ChatClient.prototype.historyRequest = function (loginTo, dateAfter, callback) {
  212.     serverDB.getHistory (this.login, loginTo, dateAfter, function (history){
  213.         this.sendData ({
  214.             type: 'HistoryRequestAnswer',
  215.             answer: history
  216.         }, callback);
  217.     });
  218. }
  219.  
  220. ChatClient.prototype.messageRead = function (id, callback) {
  221.     serverDB.messageSetRead (id, callback);
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement