Lots of cleanup here too, removing large swaths of code that are no longer needed. Many improvements the Excel workbook, which is kept in Teams, not git. These changes may or may not have had accompanying VBA changes.
703 lines
23 KiB
JavaScript
703 lines
23 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
require('dotenv').config();
|
|
const express = require('express');
|
|
var https = require('https');
|
|
var bodyParser = require('body-parser');
|
|
const server = express();
|
|
const pg = require('pg');
|
|
|
|
//---------read sql files into variables----------------
|
|
var fs = require('fs');
|
|
var readline = require('readline');
|
|
//-------------------------------------------------------
|
|
|
|
var options = {
|
|
key: fs.readFileSync(process.env.wd + 'key.pem'),
|
|
cert: fs.readFileSync(process.env.wd + 'cert.pem'),
|
|
passprase: []
|
|
};
|
|
|
|
https.createServer(options, server).listen(process.env.nodeport, () => {
|
|
console.log('started on ' + process.env.nodeport)
|
|
});
|
|
//server.listen(3000, () => console.log('started'))
|
|
|
|
var Postgres = new pg.Client({
|
|
user: process.env.user,
|
|
password: process.env.password,
|
|
host: process.env.host,
|
|
port: process.env.port,
|
|
database: process.env.database,
|
|
ssl: false,
|
|
application_name: "osm_api"
|
|
});
|
|
Postgres.connect();
|
|
|
|
Postgres.FirstRow = function(inSQL, args, inResponse) {
|
|
Postgres.query(inSQL, args, (err, res) => {
|
|
if (err === null) {
|
|
inResponse.json(res.rows[0]);
|
|
return;
|
|
}
|
|
console.log(err.stack);
|
|
inResponse.json(err.stack);
|
|
});
|
|
};
|
|
|
|
server.get('/', (req, res) => res.send('node.js express is up and running'))
|
|
|
|
server.get('/login', (req, res) => res.sendFile(process.env.wd + 'msauth.html'))
|
|
|
|
server.get('/logs', (req, res) => res.sendFile(process.env.wd + 'changes.log'))
|
|
|
|
server.get('/pgbadger', (req, res) => res.sendFile(process.env.wd + 'logs.html'))
|
|
|
|
server.get('/totals', (req, res) => res.sendFile(process.env.wd + 'totals.log'))
|
|
|
|
server.get('/test_sql', function(req, res) {
|
|
var path = './route_meta/scenario_package.sql'
|
|
var callback = function(arg) {
|
|
res.send(arg)
|
|
};
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
callback(err);
|
|
}
|
|
});
|
|
});
|
|
|
|
server.get('/get_pool', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var args = [req.body.quota_rep];
|
|
var path = './route_sql/get_pool.sql';
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
console.log(new Date().toISOString() + " GET (pool) file: " + path + "-._.".repeat(20));
|
|
console.log(req.body.quota_rep);
|
|
sql = sql.replace("rep_replace", req.body.quota_rep);
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
})
|
|
|
|
server.get('/scenario_package', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/scenario_package.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
//parse request body into a where clause
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
//if there was no body sent, return with nothing
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " GET (scenario package) file: " + path + "-._.".repeat(20))
|
|
console.log(req.body);
|
|
//parse the where clause into the main sql statement
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w)
|
|
//execute the sql and send the result
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
})
|
|
|
|
server.get('/swap_fit', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/swap_fit.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
//parse request body into a where clause
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
//if there was no body sent, return with nothing
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + "get swap fit: " + path + "-._.".repeat(20))
|
|
console.log(req.body);
|
|
//parse the where clause into the main sql statement
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("replace_new_mold", 'g'), req.body.new_mold);
|
|
//execute the sql and send the result
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
})
|
|
|
|
server.post('/swap', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/swap_post.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
//parse request body into a where clause
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
//if there was no body sent, return with nothing
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + "post swap: " + path + "-._.".repeat(20))
|
|
console.log(req.body);
|
|
//parse the where clause into the main sql statement
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("swap_doc", 'g'), JSON.stringify(req.body.swap));
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
//execute the sql and send the result
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
})
|
|
|
|
server.post('/cust_swap', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/swap_cust.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
//parse request body into a where clause
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
//if there was no body sent, return with nothing
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (cust swap) file: " + path + "-._.".repeat(20))
|
|
console.log(req.body);
|
|
//parse the where clause into the main sql statement
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("swap_doc", 'g'), JSON.stringify(req.body.swap));
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
//execute the sql and send the result
|
|
console.log(sql);
|
|
//res.json(null);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
})
|
|
|
|
server.get('/list_changes', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/list_changes.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
console.log(new Date().toISOString() + "GET (list changes) file: " + path + "-._.".repeat(20))
|
|
console.log(req.body);
|
|
//parse the where clause into the main sql statement
|
|
sql = sql.replace(new RegExp("replace_user", 'g'), req.body.scenario.quota_rep_descr)
|
|
//execute the sql and send the result
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
})
|
|
|
|
server.get('/undo_change', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/undo.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
console.log(new Date().toISOString() + " GET (undo change) file: " + path + "-._.".repeat(20))
|
|
console.log(req.body);
|
|
//parse the where clause into the main sql statement
|
|
sql = sql.replace(new RegExp("replace_id", 'g'), JSON.stringify(req.body.logid))
|
|
//execute the sql and send the result
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
};
|
|
})
|
|
|
|
//deprecating this route, just use _vp for volume and prive
|
|
/*
|
|
server.post('/addmonth_v', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1; //counts iterations through each scaenario key
|
|
var d = 1; //counts cycles in scenario key values which are arrays
|
|
var args = [];
|
|
var path = './route_sql/addmonth_vd.sql';
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
//buile where clause expression
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (add month volume) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("scenario = target_scenario", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_increment", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("target_month", 'g'), req.body.month);
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql)
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
})
|
|
*/
|
|
|
|
server.post('/addmonth_vp', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/addmonth_vupd.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (add month volume and price) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_volume", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("target_price", 'g'), req.body.amount);
|
|
sql = sql.replace(new RegExp("target_month", 'g'), req.body.month);
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
server.post('/scale_v', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/scale_vd.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (scale volume) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("incr_qty", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
server.post('/scale_p', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/scale_pd.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (scale price) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_increment", 'g'), req.body.amount);
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
server.post('/scale_vp', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/scale_vupd.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (scale volume & price) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_vol", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount);
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
server.post('/scale_vp_sales', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/scale_vupd.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (scale volume & price sales) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_vol", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount);
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
server.post('/new_part', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/new_part.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (new part) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_vol", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount);
|
|
sql = sql.replace(new RegExp("replace_request", 'g'), JSON.stringify(req.body));
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
server.post('/new_basket', bodyParser.json(), function(req, res) {
|
|
|
|
var sql = "";
|
|
var w = "";
|
|
var c = 1;
|
|
var d = 1;
|
|
var args = [];
|
|
var path = './route_sql/new_basket.sql';
|
|
|
|
var callback = function(arg) {
|
|
sql = arg;
|
|
req.body.scenario.iter.push("adj volume"); //intercept the request body and force in a "adj volume" at position 1, only a "copy" iteration is being used
|
|
|
|
({ c, w, d } = build_where(req, c, w, d, args));
|
|
|
|
if (c == 1) {
|
|
res.send("no body was sent");
|
|
return;
|
|
}
|
|
console.log(new Date().toISOString() + " POST (new basket) file: " + path + "-._.".repeat(20));
|
|
req.body.stamp = new Date().toISOString()
|
|
console.log(req.body);
|
|
//console.log(args);
|
|
sql = sql.replace(new RegExp("where_clause", 'g'), w);
|
|
sql = sql.replace(new RegExp("target_vol", 'g'), req.body.qty);
|
|
sql = sql.replace(new RegExp("target_prc", 'g'), req.body.amount);
|
|
sql = sql.replace(new RegExp("replace_request", 'g'), JSON.stringify(req.body));
|
|
sql = sql.replace(new RegExp("replace_version", 'g'), req.body.scenario.version);
|
|
sql = sql.replace(new RegExp("replace_source", 'g'), req.body.source);
|
|
sql = sql.replace(new RegExp("replace_iterdef", 'g'), JSON.stringify(req.body));
|
|
console.log(sql);
|
|
Postgres.FirstRow(sql, [], res)
|
|
}
|
|
|
|
fs.readFile(path, 'utf8', function(err, data) {
|
|
if (!err) {
|
|
callback(data);
|
|
} else {
|
|
console.log("fatal error pulling sql file")
|
|
callback(err);
|
|
}
|
|
});
|
|
})
|
|
|
|
function build_where(req, c, w, d, args) {
|
|
for (var i in req.body.scenario) {
|
|
//console.log(i);
|
|
///console.log(req.body[i]);
|
|
if (c > 1) {
|
|
w = w +
|
|
`
|
|
AND `;
|
|
}
|
|
if (Array.isArray(req.body.scenario[i])) {
|
|
//if the scenario key has a value that is an array of items, push it into an `IN` statement
|
|
//iter = [stage1, stage2] --> SQL --> iter IN ('stag1', stage2')
|
|
w = w + i + " IN (";
|
|
for (var j in req.body.scenario[i]) {
|
|
if (d > 1) {
|
|
w = w + ",";
|
|
}
|
|
w = w + "'" + req.body.scenario[i][j] + "'";
|
|
d = d + 1;
|
|
}
|
|
w = w + ")";
|
|
} else {
|
|
w = w + i + " = '" + req.body.scenario[i] + "'";
|
|
}
|
|
args.push(req.body.scenario[i]);
|
|
c = c + 1;
|
|
};
|
|
//if the request has a stamp, then it's an adjustment
|
|
//prevent making adjustment to actual history by limiting to current stamp and beyond
|
|
if (req.body.stamp) {
|
|
w = w +
|
|
`
|
|
AND order_date >= least('` + req.body.stamp + "'::date,'2022-06-01')";
|
|
}
|
|
return { c, w, d };
|
|
}
|