Advertisement
Guest User

Untitled

a guest
Jun 4th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict'
  2.  
  3. const _ = require('lodash');
  4. var fs = require('fs');
  5. var mysql = require('mysql');
  6. const mysql_host = 'iobot-prod.chdznu6kneuw.eu-west-1.rds.amazonaws.com';
  7. const mysql_user = 'v2_sql_read_prod';
  8. const mysql_database = 'lvc_v2';
  9. const mysql_password = 'CqvjZ342Qch285XZ';
  10. var update = [];
  11.  
  12. var connection = mysql.createConnection({
  13.     host            : mysql_host,
  14.     user            : mysql_user,
  15.     password        : mysql_password,
  16.     database        : mysql_database
  17. });
  18.  
  19. const isValid = (str) => {
  20.     var filter = ['of', 'from', 'where', 'with', 'when', 'the', 'png', 'jpg'];
  21.     if (str.length < 2)
  22.         return false;
  23.     else if (filter.indexOf(str) > -1)
  24.         return false;
  25.     else
  26.         return true;
  27. }
  28.  
  29. // Split the str into an array, case insensitive and remove the duplicates
  30. function str_to_array(str) {
  31.     var temp_array = [];
  32.     console.log(str);
  33.     if (!str)
  34.         return undefined;
  35.     temp_array = str.split(/[\s'(),./|-]+/);
  36.     temp_array = temp_array.map(function(element) {
  37.             var tmp = element.toLowerCase();
  38.             return tmp
  39.     });
  40.     temp_array = temp_array.filter(function(item, pos, self) {
  41.         return self.indexOf(item) == pos && isValid(item);
  42.     });
  43.     return temp_array;
  44. }
  45.  
  46. function subset(arra, array_size) {
  47.     var result_set = [],
  48.         result,
  49.         i = 0;
  50.     for(var x = 0; x < Math.pow(2, arra.length); x++) {
  51.         result = [];
  52.         i = arra.length - 1;
  53.         do {
  54.             if( (x & (1 << i)) !== 0)
  55.                 result.push(arra[i]);
  56.         } while(i--);
  57.  
  58.         if( result.length >= array_size)
  59.             result_set.push(result);
  60.     }
  61.     return result_set;
  62. }
  63.  
  64. function generate_where(element, combo) {
  65.     var param = "";
  66.  
  67.     combo.forEach(function(tmp){
  68.         if (tmp == combo[0])
  69.             param = param.concat("(");
  70.         else
  71.             param = param.concat("OR (");
  72.         tmp.forEach(function(e){
  73.             if (e == tmp[0])
  74.                 param = param.concat(element, " LIKE '%", e, "%'");
  75.             else
  76.                 param = param.concat(" AND ", element, " LIKE '%", e, "%'");
  77.         });
  78.         param = param.concat(")");
  79.     });
  80.     return param;
  81. }
  82.  
  83. const generate_sql = (schema, notion, element, array_str, size) => {
  84.     var combo = [];
  85.     var sql = "SELECT * FROM ";
  86.     var param = "";
  87.     var i = 1;
  88.  
  89.     combo = subset(array_str, size);
  90.     param = generate_where(element, combo);
  91.     sql = sql.concat(notion, " WHERE ", param);
  92.  
  93.     return sql;
  94. }
  95.  
  96. let magic_sql = (schema, notion, element, array_str, array_size, str) => {
  97.     console.log("MAGIC");
  98.     if (array_size < 1)
  99.         return
  100.     var query = generate_sql(schema, notion, element, array_str, array_size);
  101.     connection.query(query, function (err, result, fields) {
  102.         if (err) throw err;
  103.         if(result.length && !result.EPIC) {
  104.             str = str.replace(/ /g, '%20');
  105.             str = `https://storage.googleapis.com/store-iobot/bel_bot/${str}`;
  106.             result.forEach(function(element){
  107.                 var update = `UPDATE bel.element SET EPIC = "${str}" WHERE EID = ${element.EID}`;
  108.                 console.log(update);
  109.                 connection.query(update, function (err, result, fields) {
  110.                     if (err) throw err;
  111.                 });
  112.             });
  113.         }
  114.         else
  115.             magic_sql(schema, notion, element, array_str, array_size - 1, str)
  116.     });
  117. }
  118.  
  119. let get_best_result =  (schema, notion, element, str) => {
  120.     if (!schema || !notion || !element || !str) {
  121.         console.log("ERROR: Missing parameters !");
  122.         return undefined;
  123.     }
  124.     var array_str = str_to_array(str);
  125.     console.log(array_str);
  126.     var array_size = array_str.length;
  127.     var result = [];
  128.     magic_sql(schema, notion, element, array_str, array_size, str);
  129. }
  130.  
  131. fs.readFile('bel_images_copy.txt', 'utf8', function(err, data) {
  132.     if (err) throw err;
  133.     connection.connect(function(err) {
  134.         if (err) throw err;
  135.         data = data.split(/\r?\n/);
  136.         console.log(data);
  137.         data.forEach(function(element){
  138.             // console.log(element);
  139.             get_best_result('bel', 'bel.element', 'ENAME', element);
  140.         });
  141.     });
  142. });
  143.  
  144. // var str = "Leerdammer Spécial Hamburger.png";
  145. // var tmp = str_to_array(str);
  146. // console.log(generate_sql('bel', 'bel.element', 'ENAME', tmp, tmp.length));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement