Guest User

Notes Sync with MYSQL

a guest
Mar 15th, 2018
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mysql      = require('mysql');
  2. var mysqlParams = {
  3.   host     : 'localhost',
  4.   user     : 'pk_central',
  5.   password : 'xyz786',
  6.   database : 'pk_central'
  7. };
  8.  
  9. var _ = require("lodash");
  10. var Firebird = require('node-firebird');
  11. var options = {};
  12.  
  13. options.host = '192.168.10.100';
  14. options.port = 3050;
  15. options.database = 'C:\\PKS4\\Data\\cmpdwin.pkf';
  16. options.user = 'READONLYUSER';
  17. options.password = 'ReadOnly1234$';
  18. options.role = null;            // default
  19. options.pageSize = 4096;        // default when creating database
  20.  
  21. var cleanupObj = (obj) => {
  22.   _.each(obj, (v, k) => {
  23.     if(_.isNull(v) || _.isUndefined(v)) {
  24.       obj[k] = null;
  25.     } else if(_.isDate(v)) {
  26.       obj[k] = v.getTime();
  27.     } else if(_.isBuffer(v)) {
  28.       obj[k] = v.toString('utf8');
  29.     }
  30.   });
  31. };
  32.  
  33. var busy;
  34. var perpage = 50;
  35. var semaphore = 0;
  36. Firebird.attach(options, function(err, db) {
  37.      if (err)
  38.          throw err;
  39.      var count_query = 'SELECT COUNT(*) FROM DOCTOR';
  40.      db.query(count_query, function(err, result) {
  41.        if (err)
  42.               throw err;
  43.         var total = result[0].COUNT;
  44.         var pages = _.range(Math.ceil(total/perpage));
  45.         _.each(pages, (p) => {
  46.           busy = true;
  47.           var data_query = 'SELECT FIRST '+perpage+' SKIP '+p*perpage+' DOCTOR_ID, MEMO FROM DOCTOR';
  48.           console.log('COUNT QUERY: '+count_query);
  49.           console.log('FETCH QUERY: '+data_query);
  50.           db.query(data_query, function(err, result) {
  51.             semaphore = 0;
  52.             _.each(result, (tablerow) => {
  53.               if(_.isFunction(tablerow.MEMO)) {
  54.                 semaphore++;
  55.                 tablerow.memo_string = '';
  56.                 tablerow.MEMO(function(err, name, e) {
  57.                   if (err)
  58.                   throw err;
  59.                   e.on('data', function(chunk) {
  60.                     tablerow.memo_string += chunk.toString("utf8").replace(/\\u([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])/, '').replace(/\0[\s\S]*$/g,'');
  61.                   });
  62.  
  63.                   e.on('end', function() {
  64.                     semaphore--;
  65.                     semaphore++;
  66.                     var connection = mysql.createConnection(mysqlParams);
  67.                     connection.connect();
  68.                     connection.query('REPLACE INTO DOCTOR_NOTES SET DOCTOR_ID = ?, NOTES = ?', [tablerow.DOCTOR_ID, tablerow.memo_string], function(err, result) {
  69.                       semaphore--;
  70.                       if(err) throw err;
  71.                     });
  72.                     connection.end();
  73.                   });
  74.                 });
  75.               }
  76.               require('deasync').loopWhile(() => { return semaphore>0 });
  77.             });
  78.             busy = false;
  79.           });
  80.           require('deasync').loopWhile(() => { return busy });
  81.         });
  82.         db.detach();
  83.      });
  84. });
Add Comment
Please, Sign In to add comment