summaryrefslogtreecommitdiff
path: root/javascript/freq.js
diff options
context:
space:
mode:
authorGeo Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-03-21 17:42:06 +0200
committerGeo Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-03-21 17:42:06 +0200
commitadcb57d3316443bf5be6bb86d09f6d9f73b7f002 (patch)
tree85db7908f64c58394ac566fa6ebd34728f849d39 /javascript/freq.js
parent6fb262d7f6feb6105ec73a9dcd97f27783ce8b17 (diff)
downloadlinkeysearch-adcb57d3316443bf5be6bb86d09f6d9f73b7f002.tar.gz
linkeysearch-adcb57d3316443bf5be6bb86d09f6d9f73b7f002.tar.bz2
linkeysearch-adcb57d3316443bf5be6bb86d09f6d9f73b7f002.zip
linkeysearch: 2 step implementation
Diffstat (limited to 'javascript/freq.js')
-rw-r--r--javascript/freq.js129
1 files changed, 129 insertions, 0 deletions
diff --git a/javascript/freq.js b/javascript/freq.js
new file mode 100644
index 0000000..6bf1517
--- /dev/null
+++ b/javascript/freq.js
@@ -0,0 +1,129 @@
+// requirements
+////////////////////////////////////////////////////////////////////////////////
+
+var mysql = require('mysql');
+
+const fs = require('fs');
+
+
+// ready to get main data to preccess
+////////////////////////////////////////////////////////////////////////////////
+
+// db connection parametres
+// -----------------------------------------------------------------------------
+var con = mysql.createConnection({
+ host: "127.0.0.1",
+ user: "pythia_db_user_dev",
+ password: "VnEP0eysjiXDHcfM",
+ database: "dev_pythia_db"
+});
+
+
+// products' (order-)frequecy array
+// -----------------------------------------------------------------------------
+var freq_ = []; //////////////////////////////// MAIN OUTPUT OF THE SCRIPT
+var prods_ = [];
+
+
+// connect;
+// get records to proccess;
+// call main proccess function;
+// save dictionary;
+// end script;
+// -----------------------------------------------------------------------------
+con.connect(function(err) {
+ // connect;
+ if (err) throw err;
+ console.log("Connected!");
+
+ // SQL to get needed data
+ var sql = "SELECT count(pl.eys_code) as FREQuency,\
+ pl.product_id as product_id,\
+ pb.brand_name,\
+ pl.barcode, pl.skl_code, pl.eys_code,\
+ IF( pd.description IS NOT NULL , pd.description , pl.product_description ) AS product_description,\
+ pl.bpcs_code,\
+ pd.image_path\
+ FROM product_list as pl\
+ LEFT JOIN delivery_orders_products AS dop ON dop.product_id = pl.eys_code\
+ LEFT JOIN delivery_orders AS do ON dop.order_id = do.id\
+ LEFT JOIN product_list AS replacement ON dop.replacement_for = replacement.eys_code\
+ LEFT JOIN product_details AS pd ON pl.eys_code = pd.eys_code\
+ LEFT JOIN product_brands pb ON pl.brand_id = pb.id\
+ WHERE pl.active = 1 AND pl.sap_code IS NOT NULL AND pl.product_category_sap_4 NOT LIKE '72%'\
+ GROUP BY pl.product_id\
+ ORDER BY FREQuency DESC\
+ LIMIT 60000";
+
+ // query sql
+ con.query(sql, function (err, result) {
+ if (err) throw err;
+ console.log('Records from database received!')
+
+ do_proccess(result); // proccess
+ console.log('Keywords proccesed!')
+
+ save_keywords(); // save
+ console.log('Results saved! Exiting.')
+
+ // echo memory stats
+ const used = process.memoryUsage();
+ for (let key in used) {
+ console.log(`${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`);
+ }
+ process.exit(1); // exit
+ });
+});
+
+
+// main proccess
+// -----------------------------------------------------------------------------
+function do_proccess(obj) {
+ // console.log(JSON.stringify(obj, null, 2));
+
+ var freq = [];
+
+ obj.forEach( rec => {
+ var description = rec.product_description;
+ var fq = rec.FREQuency;
+ var pid = rec.eys_code;
+
+ prods_.push({
+ id: pid,
+ w: description
+ });
+
+ freq_.push({
+ fq: fq,
+ id: pid
+ });
+ }); // main proccessing finished;
+
+}
+
+
+// save proccess
+// -----------------------------------------------------------------------------
+function save_keywords() {
+ let fqStr = JSON.stringify(freq_);
+
+ fs.writeFileSync("../results/freq.json", fqStr, 'utf8', (err) => {
+ if (err) {
+ console.log("An error occured while writing keywords.json");
+ return console.log(err);
+ }
+ console.log("JSON file has been saved.");
+ });
+
+
+ let prodStr = JSON.stringify(prods_);
+
+ fs.writeFileSync("../results/prods.json", prodStr, 'utf8', (err) => {
+ if (err) {
+ console.log("An error occured while writing keywords.json");
+ return console.log(err);
+ }
+ console.log("JSON file has been saved.");
+ });
+}
+