Advertisement
Guest User

Notes Sync with MYSQL

a guest
Mar 15th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  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. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement