work on turning into service
This commit is contained in:
parent
b8c1535cf8
commit
8a40417de9
19
cert.pem
Normal file
19
cert.pem
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDETCCAfkCFDygOtYyPxZgKLgMp/wIeQ2yGHweMA0GCSqGSIb3DQEBCwUAMEUx
|
||||||
|
CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
|
||||||
|
cm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjAwMzE3MDQ0MzI2WhcNNDcwODAyMDQ0
|
||||||
|
MzI2WjBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UE
|
||||||
|
CgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
||||||
|
AQ8AMIIBCgKCAQEAruKzxqy7Zdk1odLAtnKs60eu5/rLGMdsLjbB+V7R7v3bIdi/
|
||||||
|
TaoKD0oYOHjJSEfpKUEqva+W45Yx8A9dt2OE2jD2Rr3sCNub6m2vY4iB9xXGA5Wy
|
||||||
|
qtMr83Die225TOtMgGnTmYIU2D7VfOZ08xFu4rwU6NlvjHx/xMByRQ7N1QAMmlkr
|
||||||
|
F1/KRd6i4+OmFoY81ErsLL4P/rhJ8jbzbRmJGzz3DGOXFvE9Qk+DdMxk8WnzfiZc
|
||||||
|
8HBVBMYPYifSvuoARtxigQOwodjOTrb+asw3AG5B4Yh1NnZMDa8ujaYgid0RiN8a
|
||||||
|
Y18GcXZmtGdl1h88Zmlv+sqJbSK5ThOj8pPsxQIDAQABMA0GCSqGSIb3DQEBCwUA
|
||||||
|
A4IBAQBpLPJ1YZYPERYPYQbczMgcv+GaT7mqJNo7ATAgvMQYIhk2PjbS1FU8+A1X
|
||||||
|
DBuSb4vfJ6C2zEAWoduncNbKXw4Q9UkZS6/fer8HS1oYOWe9gli/V+hisEPfF1DB
|
||||||
|
6jyvbp1PZYd39LccovQ9d1ujEOdch+I2iQP4BfpiQohXePDXJA1eDCg2kQBI7aAF
|
||||||
|
IQ9ZB4ywe6IivLsv1hM37EWEAf6/wO8k2HrZf+LvQAf+fuk/SIhNFav7oRg/FuBJ
|
||||||
|
p+56Itc8M+Qd6fIEFyj6GOAUhUzbuA1TH9h/XP6dmMk1XIWrFjhUQ4QC0scLdKTF
|
||||||
|
+xO3dWJaJnrTa+8Ex7KK6Akgo9rc
|
||||||
|
-----END CERTIFICATE-----
|
4
create_certs.sh
Normal file
4
create_certs.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
openssl genrsa -out key.pem
|
||||||
|
openssl req -new -key key.pem -out csr.pem
|
||||||
|
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
|
||||||
|
rm csr.pem
|
14
index.js
14
index.js
@ -1,2 +1,12 @@
|
|||||||
var server = require('./server');
|
//var server = require('./server');
|
||||||
server.listen(80);
|
//server.listen(process.env.nodeport);
|
||||||
|
|
||||||
|
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)
|
||||||
|
});
|
27
key.pem
Normal file
27
key.pem
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEowIBAAKCAQEAruKzxqy7Zdk1odLAtnKs60eu5/rLGMdsLjbB+V7R7v3bIdi/
|
||||||
|
TaoKD0oYOHjJSEfpKUEqva+W45Yx8A9dt2OE2jD2Rr3sCNub6m2vY4iB9xXGA5Wy
|
||||||
|
qtMr83Die225TOtMgGnTmYIU2D7VfOZ08xFu4rwU6NlvjHx/xMByRQ7N1QAMmlkr
|
||||||
|
F1/KRd6i4+OmFoY81ErsLL4P/rhJ8jbzbRmJGzz3DGOXFvE9Qk+DdMxk8WnzfiZc
|
||||||
|
8HBVBMYPYifSvuoARtxigQOwodjOTrb+asw3AG5B4Yh1NnZMDa8ujaYgid0RiN8a
|
||||||
|
Y18GcXZmtGdl1h88Zmlv+sqJbSK5ThOj8pPsxQIDAQABAoIBAF28hy1q8frSJIv7
|
||||||
|
AW4JIyPsxRPz+Z3rbdGLaga2SwG1MRoAKfF/vWqahUbnfsNuP8vr8PPAxLhxjYyl
|
||||||
|
P88G2XN1oNsj+vp4cyaA6ewIg9ii5AKR3zTugPU3wTz0/8f5qoR9tHvoHDIX46fR
|
||||||
|
gkeyRWPj+bUgrkh3hqg3mkfnem26eQ7/lBLrwhscCqDnxg7CneoFfvdqdlYO1HTO
|
||||||
|
gU+zmwZ6LPXoeV2wQpJy0yf+FZkOd4mUiSlK5C+DMOrfjWcvdVG931h91xzQUHDh
|
||||||
|
MumjbEx5tSJXMeb4zXofBbPLUZZCHl4VkgY/C7JjG7KGrl/GN6aSkjfSCnzzBBrb
|
||||||
|
3B7lcKECgYEA20g9TfFMLp7rlaap5WAUh2wDgg7klIhLYlqx+No5YgAcnkC4ec6y
|
||||||
|
97CV9jrAdLzod9i0WVczN9d4dfA30vu45Vp9k6k+XUgnKe00PFAHQheAOY+yG+Am
|
||||||
|
KUxvjvVwHolYSTq+6dVbMAfN0rfiJgvABKuxTmdFEloQWlzMpG7Re+kCgYEAzCta
|
||||||
|
0NJEhDrgf7AUPDkeFx45ZmwcTIwGff5jOlr8WfW8/u24qRVrqnMc7JyA7Pub8NlX
|
||||||
|
b+tFMVUKfWTJbCnqOiwQjstuXrUUkL78vIBcAyETRrXln11kRM+/aOLWm3F9WgCR
|
||||||
|
qRqxEehSlpVjM3w98hLfElWjbjSMZekboNjvjH0CgYEAqoWexsHiUE7dPN8CN5Fj
|
||||||
|
5XulrroOH0Nt++ozhCWPgho8JwSFcJPAsMTtmTFPAHj2/lvSw7b/6WjyECTiBHwj
|
||||||
|
6JdaGD4AdWHqsrv3Zv+E5WyJFjocc3j3tB3wkudibRy5Pxkj5Ys5AjzPXhIJFzUD
|
||||||
|
+Z3an/HG0OKg3ORVb3mOBiECgYA9EEZ0KD9H0Rgt+GrE7Excm7SNNo5sMoEKk9f3
|
||||||
|
rxjEiyPAlzbgk0CFVTJ0bgZ9Wm90ZHyrQ5GJRKcDg+5eRFcCmQVGv/89oikJdaW/
|
||||||
|
dyCN6wmJ34NS26rOjdfwtc975ECad4sZKZuGAJca5Ikr79/TE+PV5vkfT+Yh4Mtb
|
||||||
|
myZiPQKBgHGM9ZSXCQRGeZqhbSZeXBC/oBSdI2+R8HSR9O7x9yLiRd5JGDJS82q9
|
||||||
|
4aKQRCAGQ7AILEBmdwWXQuFqrroUYFWR+YYIGwBZhms1Fdcb1WvjV0Ag/GBce93x
|
||||||
|
XQgdFrcA0mZ5BUXR5MFPCOeYfi/d4GjQbMPls36tz7DnAFMHeKbF
|
||||||
|
-----END RSA PRIVATE KEY-----
|
142
server.js
142
server.js
@ -7,13 +7,15 @@ var mult = require('multer');
|
|||||||
var upload = mult({ encoding: "utf8" });
|
var upload = mult({ encoding: "utf8" });
|
||||||
var csvtojson = require('csvtojson');
|
var csvtojson = require('csvtojson');
|
||||||
var pg = require('pg');
|
var pg = require('pg');
|
||||||
|
var https = require('https');
|
||||||
|
var fs = require('fs');
|
||||||
|
var readline = require('readline');
|
||||||
|
|
||||||
var server = express();
|
var server = express();
|
||||||
server.engine('handlebars', handlebars());
|
server.engine('handlebars', handlebars());
|
||||||
server.set('view engine', 'handlebars');
|
server.set('view engine', 'handlebars');
|
||||||
|
|
||||||
server.use(function(inReq, inRes, inNext)
|
server.use(function(inReq, inRes, inNext) {
|
||||||
{
|
|
||||||
inRes.header("Access-Control-Allow-Origin", "*");
|
inRes.header("Access-Control-Allow-Origin", "*");
|
||||||
inRes.header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
|
inRes.header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
|
||||||
inRes.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
inRes.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||||
@ -21,6 +23,17 @@ server.use(function(inReq, inRes, inNext)
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
var Postgres = new pg.Client({
|
var Postgres = new pg.Client({
|
||||||
user: process.env.user,
|
user: process.env.user,
|
||||||
password: process.env.password,
|
password: process.env.password,
|
||||||
@ -30,11 +43,9 @@ var Postgres = new pg.Client({
|
|||||||
ssl: false,
|
ssl: false,
|
||||||
application_name: "tps_etl_api"
|
application_name: "tps_etl_api"
|
||||||
});
|
});
|
||||||
Postgres.FirstRow = function(inSQL,args, inResponse)
|
Postgres.FirstRow = function(inSQL, args, inResponse) {
|
||||||
{
|
Postgres.query(inSQL, args, (err, res) => {
|
||||||
Postgres.query(inSQL,args, (err, res) => {
|
if (err === null) {
|
||||||
if (err === null)
|
|
||||||
{
|
|
||||||
inResponse.json(res.rows[0]);
|
inResponse.json(res.rows[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -46,44 +57,40 @@ Postgres.connect();
|
|||||||
//----------------------------------------------------------source definitions-------------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------source definitions-------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
//returns array of all sources
|
//returns array of all sources
|
||||||
server.get("/source", function (inReq, inRes)
|
server.get("/source", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(defn) source_list FROM tps.srce";
|
var sql = "SELECT jsonb_agg(defn) source_list FROM tps.srce";
|
||||||
Postgres.FirstRow(sql,[], inRes);
|
Postgres.FirstRow(sql, [], inRes);
|
||||||
});
|
});
|
||||||
//returns message about status and error description
|
//returns message about status and error description
|
||||||
server.post("/source_single", bodyParser.json(), function (inReq, inRes)// remove body parsing, just pass post body to the sql string build
|
server.post("/source_single", bodyParser.json(), function(inReq, inRes) // remove body parsing, just pass post body to the sql string build
|
||||||
{
|
{
|
||||||
var sql = "SELECT x.message FROM tps.srce_set($1::jsonb) as x(message)";
|
var sql = "SELECT x.message FROM tps.srce_set($1::jsonb) as x(message)";
|
||||||
Postgres.FirstRow(sql,[JSON.stringify(inReq.body)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
||||||
});
|
});
|
||||||
//assume inboud info is json array of definitions to set
|
//assume inboud info is json array of definitions to set
|
||||||
server.post("/source", bodyParser.json(), function (inReq, inRes)// remove body parsing, just pass post body to the sql string build
|
server.post("/source", bodyParser.json(), function(inReq, inRes) // remove body parsing, just pass post body to the sql string build
|
||||||
{
|
{
|
||||||
//x = inReq.body;
|
//x = inReq.body;
|
||||||
var sql = "SELECT x.message FROM tps.srce_overwrite_all($1::jsonb) x(message)";
|
var sql = "SELECT x.message FROM tps.srce_overwrite_all($1::jsonb) x(message)";
|
||||||
//console.log(JSON.stringify(inReq.body));
|
//console.log(JSON.stringify(inReq.body));
|
||||||
Postgres.FirstRow(sql,[JSON.stringify(inReq.body)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//----------------------------------------------------------regex instrUctions-------------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------regex instrUctions-------------------------------------------------------------------------------------------------------------------------
|
||||||
//list all regex operations
|
//list all regex operations
|
||||||
server.get("/regex", function (inReq, inRes)
|
server.get("/regex", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(regex) regex FROM tps.map_rm WHERE srce = $1::text";
|
var sql = "SELECT jsonb_agg(regex) regex FROM tps.map_rm WHERE srce = $1::text";
|
||||||
Postgres.FirstRow(sql, [inReq.query.srce], inRes);
|
Postgres.FirstRow(sql, [inReq.query.srce], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//set one or more map definitions
|
//set one or more map definitions
|
||||||
server.post("/regex", bodyParser.json(), function (inReq, inRes)
|
server.post("/regex", bodyParser.json(), function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT x.message FROM tps.srce_map_def_set($1::jsonb) as x(message)";
|
var sql = "SELECT x.message FROM tps.srce_map_def_set($1::jsonb) as x(message)";
|
||||||
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//takes an ad-hoc regex definition in curly braces
|
//takes an ad-hoc regex definition in curly braces
|
||||||
server.get("/regex_test", bodyParser.json(), function (inReq, inRes)
|
server.get("/regex_test", bodyParser.json(), function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT x.message FROM tps.test_regex_recs($1::jsonb) as x(message)";
|
var sql = "SELECT x.message FROM tps.test_regex_recs($1::jsonb) as x(message)";
|
||||||
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
||||||
});
|
});
|
||||||
@ -91,49 +98,44 @@ server.get("/regex_test", bodyParser.json(), function (inReq, inRes)
|
|||||||
//------------------------------------------------------------mappings---------------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------mappings---------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
//list unmapped items flagged to be mapped ?srce=
|
//list unmapped items flagged to be mapped ?srce=
|
||||||
server.get("/unmapped_all", function (inReq, inRes)
|
server.get("/unmapped_all", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.report_unmapped_recs($1::text) x";
|
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.report_unmapped_recs($1::text) x";
|
||||||
Postgres.FirstRow(sql,[inReq.query.srce], inRes);
|
Postgres.FirstRow(sql, [inReq.query.srce], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//list unmapped items flagged to be mapped ?srce=
|
//list unmapped items flagged to be mapped ?srce=
|
||||||
server.get("/unmapped", function (inReq, inRes)
|
server.get("/unmapped", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.report_unmapped($1::text) x";
|
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.report_unmapped($1::text) x";
|
||||||
Postgres.FirstRow(sql,[inReq.query.srce], inRes);
|
Postgres.FirstRow(sql, [inReq.query.srce], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
server.get("/mapping", function (inReq, inRes)
|
server.get("/mapping", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.map_rv x WHERE srce = $1::text";
|
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.map_rv x WHERE srce = $1::text";
|
||||||
|
|
||||||
Postgres.FirstRow(sql,[inReq.query.srce], inRes);
|
Postgres.FirstRow(sql, [inReq.query.srce], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//add entries to lookup table
|
//add entries to lookup table
|
||||||
server.post("/mapping", bodyParser.json(), function (inReq, inRes)
|
server.post("/mapping", bodyParser.json(), function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT x.message FROM tps.map_rv_set($1::jsonb) as x(message)";
|
var sql = "SELECT x.message FROM tps.map_rv_set($1::jsonb) as x(message)";
|
||||||
Postgres.FirstRow(sql,[JSON.stringify( inReq.body)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(inReq.body)], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//---------------------------------------------------------list imports--------------------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------list imports--------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
server.get("/import_log", function (inReq, inRes)
|
server.get("/import_log", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(row_to_json(l)::jsonb) regex FROM tps.trans_log l";
|
var sql = "SELECT jsonb_agg(row_to_json(l)::jsonb) regex FROM tps.trans_log l";
|
||||||
Postgres.FirstRow(sql,[], inRes);
|
Postgres.FirstRow(sql, [], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------------import data-----------------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------import data-----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
server.use("/import", upload.single('upload'), function (inReq, inRes) {
|
server.use("/import", upload.single('upload'), function(inReq, inRes) {
|
||||||
|
|
||||||
console.log("should have gotten file as post body here");
|
console.log("should have gotten file as post body here");
|
||||||
var csv = inReq.file.buffer.toString('utf8')
|
var csv = inReq.file.buffer.toString('utf8')
|
||||||
//{headers: "true", delimiter: ",", output: "jsonObj", flatKeys: "true"}
|
//{headers: "true", delimiter: ",", output: "jsonObj", flatKeys: "true"}
|
||||||
csvtojson({ flatKeys: "true" }).fromString(csv).then(
|
csvtojson({ flatKeys: "true" }).fromString(csv).then(
|
||||||
(x) => {
|
(x) => {
|
||||||
var sql = "SELECT x.message FROM tps.srce_import($1, $2::jsonb) as x(message)"
|
var sql = "SELECT x.message FROM tps.srce_import($1, $2::jsonb) as x(message)"
|
||||||
@ -141,24 +143,22 @@ server.use("/import", upload.single('upload'), function (inReq, inRes) {
|
|||||||
Postgres.FirstRow(sql, [inReq.query.srce, JSON.stringify(x)], inRes);
|
Postgres.FirstRow(sql, [inReq.query.srce, JSON.stringify(x)], inRes);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
);
|
|
||||||
|
|
||||||
//----------------------------------------------------------list import logs---------------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------list import logs---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
server.get("/import_log", function (inReq, inRes)
|
server.get("/import_log", function(inReq, inRes) {
|
||||||
{
|
|
||||||
var sql = "SELECT jsonb_agg(info) info FROM tps.trans_log WHERE info @> $1::jsonb";
|
var sql = "SELECT jsonb_agg(info) info FROM tps.trans_log WHERE info @> $1::jsonb";
|
||||||
Postgres.FirstRow(sql, [inReq.query], inRes);
|
Postgres.FirstRow(sql, [inReq.query], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//-------------------------------------------------------------suggest source def----------------------------------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------suggest source def----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
server.use("/csv_suggest", upload.single('upload'), function (inReq, inRes) {
|
server.use("/csv_suggest", upload.single('upload'), function(inReq, inRes) {
|
||||||
|
|
||||||
console.log("should have gotten file as post body here");
|
console.log("should have gotten file as post body here");
|
||||||
var csv = inReq.file.buffer.toString('utf8')
|
var csv = inReq.file.buffer.toString('utf8')
|
||||||
//{headers: "true", delimiter: ",", output: "jsonObj", flatKeys: "true"}
|
//{headers: "true", delimiter: ",", output: "jsonObj", flatKeys: "true"}
|
||||||
csvtojson({ flatKeys: "true" }).fromString(csv).then(
|
csvtojson({ flatKeys: "true" }).fromString(csv).then(
|
||||||
(x) => {
|
(x) => {
|
||||||
var sug = {
|
var sug = {
|
||||||
@ -166,7 +166,7 @@ server.use("/csv_suggest", upload.single('upload'), function (inReq, inRes) {
|
|||||||
default: []
|
default: []
|
||||||
},
|
},
|
||||||
loading_function: "csv",
|
loading_function: "csv",
|
||||||
source:"client_file",
|
source: "client_file",
|
||||||
name: "",
|
name: "",
|
||||||
constraint: []
|
constraint: []
|
||||||
};
|
};
|
||||||
@ -175,14 +175,14 @@ server.use("/csv_suggest", upload.single('upload'), function (inReq, inRes) {
|
|||||||
//test if number
|
//test if number
|
||||||
if (!isNaN(parseFloat(x[0][key])) && isFinite(x[0][key])) {
|
if (!isNaN(parseFloat(x[0][key])) && isFinite(x[0][key])) {
|
||||||
//if is a number but leading character is -0- then it's text
|
//if is a number but leading character is -0- then it's text
|
||||||
if (x[0][key].charAt(0) == "0"){
|
if (x[0][key].charAt(0) == "0") {
|
||||||
col["type"] = "text";
|
col["type"] = "text";
|
||||||
}
|
}
|
||||||
//if number and leadign character is not 0 then numeric
|
//if number and leadign character is not 0 then numeric
|
||||||
else {
|
else {
|
||||||
col["type"] = "numeric";
|
col["type"] = "numeric";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if can cast to a date within a hundred years its probably a date
|
//if can cast to a date within a hundred years its probably a date
|
||||||
else if (Date.parse(x[0][key]) > Date.parse('1950-01-01') && Date.parse(x[0][key]) < Date.parse('2050-01-01')) {
|
else if (Date.parse(x[0][key]) > Date.parse('1950-01-01') && Date.parse(x[0][key]) < Date.parse('2050-01-01')) {
|
||||||
col["type"] = "date";
|
col["type"] = "date";
|
||||||
@ -199,8 +199,7 @@ server.use("/csv_suggest", upload.single('upload'), function (inReq, inRes) {
|
|||||||
inRes.json(sug);
|
inRes.json(sug);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
});
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -209,21 +208,20 @@ server.use("/csv_suggest", upload.single('upload'), function (inReq, inRes) {
|
|||||||
|
|
||||||
|
|
||||||
//add ledger array and create offset account for every line
|
//add ledger array and create offset account for every line
|
||||||
server.get("/gl_mhi_multi_post", bodyParser.json(), function (inReq, inRes)
|
server.get("/gl_mhi_multi_post", bodyParser.json(), function(inReq, inRes) {
|
||||||
{
|
|
||||||
var l = 0;
|
var l = 0;
|
||||||
console.log(inReq.body);
|
console.log(inReq.body);
|
||||||
x = inReq.body;
|
x = inReq.body;
|
||||||
x.gl = {};
|
x.gl = {};
|
||||||
x.gl.lines = [];
|
x.gl.lines = [];
|
||||||
x.gl.jpath = [];
|
x.gl.jpath = [];
|
||||||
for (var i in x.item){
|
for (var i in x.item) {
|
||||||
//copy the current item to the gl array
|
//copy the current item to the gl array
|
||||||
var line = x.item[i];
|
var line = x.item[i];
|
||||||
x.gl.lines.push(line);
|
x.gl.lines.push(line);
|
||||||
//build references to 'item' array
|
//build references to 'item' array
|
||||||
var ref = [];
|
var ref = [];
|
||||||
ref.push("{item,"+i+"}");
|
ref.push("{item," + i + "}");
|
||||||
ref.push("{header}");
|
ref.push("{header}");
|
||||||
x.gl.jpath.push(ref);
|
x.gl.jpath.push(ref);
|
||||||
//copy the current item to the gl array again, but swap account with supplied 'account' in header
|
//copy the current item to the gl array again, but swap account with supplied 'account' in header
|
||||||
@ -236,37 +234,35 @@ server.get("/gl_mhi_multi_post", bodyParser.json(), function (inReq, inRes)
|
|||||||
}
|
}
|
||||||
var sql = "INSERT INTO evt.bpr (bpr) SELECT $1";
|
var sql = "INSERT INTO evt.bpr (bpr) SELECT $1";
|
||||||
console.log(JSON.stringify(x));
|
console.log(JSON.stringify(x));
|
||||||
Postgres.FirstRow(sql,[JSON.stringify(x)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(x)], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
//add ledger array and create offset account for every line
|
//add ledger array and create offset account for every line
|
||||||
server.get("/gl_mje_build", bodyParser.json(), function (inReq, inRes)
|
server.get("/gl_mje_build", bodyParser.json(), function(inReq, inRes) {
|
||||||
{
|
|
||||||
var l = 0;
|
var l = 0;
|
||||||
console.log(inReq.body);
|
console.log(inReq.body);
|
||||||
x = inReq.body;
|
x = inReq.body;
|
||||||
x.gl = {};
|
x.gl = {};
|
||||||
x.gl.lines = [];
|
x.gl.lines = [];
|
||||||
x.gl.jpath = [];
|
x.gl.jpath = [];
|
||||||
for (var i in x.items){
|
for (var i in x.items) {
|
||||||
//copy the current item to the gl array
|
//copy the current item to the gl array
|
||||||
var line = x.items[i];
|
var line = x.items[i];
|
||||||
x.gl.lines.push(line);
|
x.gl.lines.push(line);
|
||||||
//build references to 'item' array
|
//build references to 'item' array
|
||||||
var ref = [];
|
var ref = [];
|
||||||
ref.push("{items,"+i+"}");
|
ref.push("{items," + i + "}");
|
||||||
ref.push("{header}");
|
ref.push("{header}");
|
||||||
x.gl.jpath.push(ref);
|
x.gl.jpath.push(ref);
|
||||||
}
|
}
|
||||||
var sql = "INSERT INTO evt.bpr (bpr) SELECT $1";
|
var sql = "INSERT INTO evt.bpr (bpr) SELECT $1";
|
||||||
console.log(JSON.stringify(x));
|
console.log(JSON.stringify(x));
|
||||||
Postgres.FirstRow(sql,[JSON.stringify(x)], inRes);
|
Postgres.FirstRow(sql, [JSON.stringify(x)], inRes);
|
||||||
});
|
});
|
||||||
|
|
||||||
//add ledger array and create offset account for total of all lines
|
//add ledger array and create offset account for total of all lines
|
||||||
server.get("/gl_mhi_single_build", bodyParser.json(), function (inReq, inRes)
|
server.get("/gl_mhi_single_build", bodyParser.json(), function(inReq, inRes) {
|
||||||
{
|
|
||||||
var l = 0;
|
var l = 0;
|
||||||
var tot = 0.00;
|
var tot = 0.00;
|
||||||
var bomb = false;
|
var bomb = false;
|
||||||
@ -274,13 +270,12 @@ server.get("/gl_mhi_single_build", bodyParser.json(), function (inReq, inRes)
|
|||||||
x = inReq.body;
|
x = inReq.body;
|
||||||
//add GL array
|
//add GL array
|
||||||
x.GL = [];
|
x.GL = [];
|
||||||
for (var i in x.item){
|
for (var i in x.item) {
|
||||||
var line = x.item[i];
|
var line = x.item[i];
|
||||||
if ((line.account != null) && (line.amount != null)) {
|
if ((line.account != null) && (line.amount != null)) {
|
||||||
x.GL.push(line);
|
x.GL.push(line);
|
||||||
tot = tot + (line.amount || 0);
|
tot = tot + (line.amount || 0);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
bomb = true;
|
bomb = true;
|
||||||
}
|
}
|
||||||
//add the whole line as-is
|
//add the whole line as-is
|
||||||
@ -296,8 +291,7 @@ server.get("/gl_mhi_single_build", bodyParser.json(), function (inReq, inRes)
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
server.get("/", function (inReq, inRes)
|
server.get("/", function(inReq, inRes) {
|
||||||
{
|
|
||||||
inRes.render("definition", { title: "definition", layout: "main" });
|
inRes.render("definition", { title: "definition", layout: "main" });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
13
template.service
Normal file
13
template.service
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=forecast_api
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/node //opt/forecast_api/index.js
|
||||||
|
Restart=always
|
||||||
|
User=fc_api
|
||||||
|
Environemnt=NODE_ENV=production
|
||||||
|
WorkingDirectory=//opt/forecast_api
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user