Save transfer request/response to DB

This commit is contained in:
ChiefSoft works
2022-06-05 04:35:33 +00:00
parent 37b8a3bd4e
commit 971dc7a2b2
+52 -2
View File
@@ -31,6 +31,33 @@ var transfer = {
logger.info(url); logger.info(url);
logger.info(options); logger.info(options);
logger.info(data); logger.info(data);
/*
CREATE TABLE flutterwave (
id bigserial,
money_transfer_id int NOT NULL REFERENCES money_transfer(id),
request json NOT NULL,
response json NOT NULL,
created timestamp DEFAULT NOW(),
PRIMARY KEY(id)
);
*/
// Save request in the DB
var queryText = 'INSERT INTO flutterwave(money_transfer_id, request) VALUES($1, $2) RETURNING id'
db.query(queryText, [req.body.money_transfer_id, data], function(dbErr, result) {
if (dbErr) {
logger.info('Failed to save request in the DB for money_transfer_id =', flutterwave_id);
logger.info(dbErr);
res.send({
status: "failure",
message: "Failed to save request in the DB!",
details: dbErr.message,
code: null,
data: data
});
} else {
var flutterwave_id = result.rows[0].id;
logger.info('Request saved int the DB for money_transfer_id =', flutterwave_id);
logger.info(result.rows);
// https://blog.logrocket.com/5-ways-to-make-http-requests-in-node-js/ // https://blog.logrocket.com/5-ways-to-make-http-requests-in-node-js/
// https://stackoverflow.com/questions/53846709/how-do-i-use-axios-within-expressjs // https://stackoverflow.com/questions/53846709/how-do-i-use-axios-within-expressjs
axios.post(url, data, options) axios.post(url, data, options)
@@ -39,17 +66,38 @@ var transfer = {
logger.info('-------------------------------'); logger.info('-------------------------------');
logger.info(response.data); logger.info(response.data);
logger.info('-------------------------------'); logger.info('-------------------------------');
res.json({ var json = {
status: response.status, status: response.status,
statusText: response.statusText, statusText: response.statusText,
data: response.data data: response.data
};
queryText = 'UPDATE flutterwave SET response=$1 WHERE id=$2';
db.query(queryText, [json, flutterwave_id], function(dbErr, result) {
if (dbErr) {
logger.info('Failed to save response in the DB for money_transfer_id =', flutterwave_id);
logger.info(dbErr);
} else {
logger.info('Response saved int the DB for money_transfer_id =', flutterwave_id);
logger.info('Updated row count:', result.rowCount);
}
}); });
res.json(json);
}) })
.catch(err => { .catch(err => {
logger.error(err.message); logger.error(err.message);
//logger.error(err.stack); //logger.error(err.stack);
//logger.error(err.response.data); //logger.error(err.response.data);
//logger.error(err.response.headers); //logger.error(err.response.headers);
queryText = 'UPDATE flutterwave SET response=$1 WHERE id=$2';
db.query(queryText, [err, flutterwave_id], function(dbErr, result) {
if (dbErr) {
logger.info('Failed to save error response in the DB for money_transfer_id =', flutterwave_id);
logger.info(dbErr);
} else {
logger.info('Error response saved int the DB for money_transfer_id =', flutterwave_id);
logger.info('Updated row count:', result.rowCount);
}
});
res.send({ res.send({
status: "failure", status: "failure",
message: "Invalid response", message: "Invalid response",
@@ -58,7 +106,9 @@ var transfer = {
data: typeof err.response !== 'undefined' ? err.response.data : null data: typeof err.response !== 'undefined' ? err.response.data : null
}); });
}); });
// TODO: Do we save the response in the DB? I assume: YES }
});
// Check DB time stamp (integrity check)
db.query('SELECT NOW()', (err, res) => { db.query('SELECT NOW()', (err, res) => {
if (err) { if (err) {
throw err; throw err;