CORS setup and FirstRow method added to postgres object

This commit is contained in:
unknown 2018-06-24 14:12:34 -04:00
parent 21847e9a6d
commit ebc296366e
2 changed files with 58 additions and 127 deletions

View File

@ -5,7 +5,7 @@
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"test": "node_modules/mocha/bin/mocha", "test": "node_modules/mocha/bin/mocha",
"start": "node index.js" "start": "nodemon index.js"
}, },
"author": "", "author": "",
"license": "ISC", "license": "ISC",

177
server.js
View File

@ -11,12 +11,16 @@ var pg = require('pg');
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(req, res, next) {
res.header("Access-Control-Allow-Origin", "*"); server.use(function(inReq, inRes, inNext)
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); {
next(); inRes.header("Access-Control-Allow-Origin", "*");
inRes.header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE, OPTIONS");
inRes.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
inNext();
}); });
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,
@ -26,133 +30,59 @@ var Postgres = new pg.Client({
application_name: "tps_etl_api", application_name: "tps_etl_api",
ssl: true ssl: true
}); });
Postgres.FirstRow = function(inSQL, inResponse)
{
Postgres.query(inSQL, (err, res) => {
if (err === null)
{
inResponse.json(res.rows[0]);
return;
}
inResponse.json(err.message);
});
};
Postgres.connect(); Postgres.connect();
//-------------------------------------------------------------list source--------------------------------------------------------------------------
server.use("/srce_list", 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";
console.log(sql); Postgres.FirstRow(sql, inRes);
});
Postgres.query(sql, (err, res) => { server.post("/source", bodyParser.json(), function (inReq, inRes)// remove body parsing, just pass post body to the sql string build
inRes.json(res.rows[0]); {
console.log("source list request complete"); var sql = "SELECT x.message FROM tps.srce_set($$" + JSON.stringify(inReq.body) + "$$::jsonb) as x(message)";
Postgres.FirstRow(sql, inRes);
}); });
}
);
//-------------------------------------------------------------list maps-------------------------------------------------------------------------- //-------------------------------------------------------------list maps--------------------------------------------------------------------------
server.get("/map_list", function (inReq, inRes)
server.use("/map_list", function (inReq, inRes) { {
var sql = "SELECT jsonb_agg(regex) regex FROM tps.map_rm";
var sql = "SELECT jsonb_agg(regex) regex FROM tps.map_rm" Postgres.FirstRow(sql, inRes);
console.log(sql);
Postgres.query(sql, (err, res) => {
if (err === null) {
inRes.json(res.rows[0]);
return;
}
inRes.json(err.message);
});
}
);
//--------------------------------------------------------list unmapped items flagged to be mapped---------------------------------------------------
server.use("/unmapped", function (inReq, inRes) {
var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.report_unmapped_recs('";
sql += inReq.query.srce + "') x"
console.log(sql);
Postgres.query(sql, (err, res) => {
if (err === null) {
inRes.json(res.rows[0]);
return;
}
inRes.json(err.message);
});
}
);
//-------------------------------------------------------------set source via json in body--------------------------------------------------------------------------
server.use("/srce_set", bodyParser.json(), function (inReq, inRes) {
//validate the body contents before pushing to sql?
var sql = "SELECT x.message FROM tps.srce_set($$";
sql += JSON.stringify( inReq.body);
sql += "$$::jsonb) as x(message)";
console.log(sql);
Postgres.query(sql, (err, res) => {
//Postgres.end();
if (err === null) {
inRes.json(res.rows[0]);
return;
}
inRes.json(err.message);
//handle error
});
}
);
//-------------------------------------------------------------set one or more map definitions--------------------------------------------------------------------------
server.use("/mapdef_set", bodyParser.json(), function (inReq, inRes) {
//validate the body contents before pushing to sql?
var sql = "SELECT x.message FROM tps.srce_map_def_set($$";
sql += JSON.stringify( inReq.body);
sql += "$$::jsonb) as x(message)";
console.log(sql);
Postgres.query(sql, (err, res) => {
//Postgres.end();
if (err === null) {
inRes.json(res.rows[0]);
return;
}
inRes.json(err.message);
//handle error
}); });
} //list unmapped items flagged to be mapped ?srce=
); server.get("/unmapped", function (inReq, inRes)
{
//-------------------------------------------------------------add entries to lookup table-------------------------------------------------------------------------- var sql = "SELECT jsonb_agg(row_to_json(x)::jsonb) regex FROM tps.report_unmapped_recs('"+ inReq.query.srce + "') x";
Postgres.FirstRow(sql, inRes);
server.use("/mapval_set", bodyParser.json(), function (inReq, inRes) {
//validate the body contents before pushing to sql?
var sql = "SELECT x.message FROM tps.map_rv_set($$";
sql += JSON.stringify( inReq.body);
sql += "$$::jsonb) as x(message)";
console.log(sql);
Postgres.query(sql, (err, res) => {
//Postgres.end();
if (err === null) {
inRes.json(res.rows[0]);
return;
}
inRes.json(err.message);
//handle error
}); });
}
); //set one or more map definitions
server.post("/mapdef_set", bodyParser.json(), function (inReq, inRes)
{
var sql = "SELECT x.message FROM tps.srce_map_def_set($$" + JSON.stringify(inReq.body) + "$$::jsonb) as x(message)";
Postgres.FirstRow(sql, inRes);
});
//add entries to lookup table
server.post("/mapval_set", bodyParser.json(), function (inReq, inRes)
{
var sql = "SELECT x.message FROM tps.map_rv_set($$" + JSON.stringify( inReq.body) + "$$::jsonb) as x(message)";
Postgres.FirstRow(sql, inRes);
});
/* /*
send a csv with powershell: send a csv with powershell:
@ -252,8 +182,9 @@ server.use("/csv_suggest", upload.single('upload'), 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" });
}) });
module.exports = server; module.exports = server;