From fcd2182ce4d0a64f21559fc23c87192ec5e10963 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Fri, 23 Feb 2024 17:20:10 -0500 Subject: [PATCH] service fix --- .env | 2 +- .gitignore | 6 ++ api/controller.js | 35 ++-------- api/routes.js | 12 +--- docker-compose.yml | 2 +- package.json | 6 +- service/jobs.js | 155 +++------------------------------------------ 7 files changed, 28 insertions(+), 190 deletions(-) create mode 100644 .gitignore diff --git a/.env b/.env index 4b80416..28991c5 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ -WRENCHJOB_PORT=3000 +WRENCHJOB_PORT=3033 WRENCHJOB_POSTGRE_URL='postgresql://wrenchboard:wrenchboard@10.20.30.60:5432/wrenchboard' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62a1a1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules +*.log +config.json +.queues +*.txt +docs \ No newline at end of file diff --git a/api/controller.js b/api/controller.js index 976d0d2..6a4cb60 100644 --- a/api/controller.js +++ b/api/controller.js @@ -1,20 +1,11 @@ 'use strict'; const properties = require('../package.json') -const transaction = require('../service/transaction'); -const transfer = require('../service/transfer'); -const account = require('../service/account'); +const jobs = require('../service/jobs'); var controllers = { - about: function(req, res) { - var aboutInfo = { - name: properties.name, - version: properties.version - } - res.json(aboutInfo); - }, - postTransfer: function(req, res) { - transfer.create(req, res, function(err, dist) { + getMarketJobs: function(req, res) { + jobs.create(req, res, function(err, dist) { if (err) { res.send(err); } @@ -22,29 +13,13 @@ var controllers = { }); }, getStatus: function(req, res) { - transfer.get(req, res, function(err, dist) { + jobs.get(req, res, function(err, dist) { if (err) { res.send(err); } res.json(dist); }); - }, - verifyTransaction: function(req, res) { - transaction.verify(req, res, function(err, dist) { - if (err) { - res.send(err); - } - res.json(dist); - }); - }, - verifyAccount: function(req, res) { - account.verify(req, res, function(err, dist) { - if (err) { - res.send(err); - } - res.json(dist); - }); - }, + }, }; module.exports = controllers; diff --git a/api/routes.js b/api/routes.js index 58ddab9..8f99b44 100644 --- a/api/routes.js +++ b/api/routes.js @@ -3,14 +3,8 @@ const controller = require('./controller'); module.exports = function(app) { - app.route('/about') - .get(controller.about); - app.route('/create') - .post(controller.postTransfer); - app.route('/status/:id') + app.route('/marketjobs') + .get(controller.getMarketJobs); + app.route('/marketjobs/:id') .get(controller.getStatus); - app.route('/verifyTransaction/:id') - .get(controller.verifyTransaction); - app.route('/verify') - .post(controller.verifyAccount); }; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 402ae3e..eeec1ea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,6 @@ services: - 9086:3000 environment: - PORT=${WRENCHJOB_PORT} - - WRENCHJOB_POSTGRE_URL=${FLUTTERWAVE_POSTGRE_URL} + - POSTGRE_URL=${WRENCHJOB_POSTGRE_URL} volumes: src: \ No newline at end of file diff --git a/package.json b/package.json index c9ad8d1..0cf0143 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "wrenhboard-job-micro", - "version": "0.0.4", - "description": "A microservice to handle wrenchboard job listing", + "name": "wrenhboard-jobs-micro", + "version": "0.0.1", + "description": "A microservice to handle wrenchboard jobs listing", "main": "server.js", "scripts": { "generate-docs": "jsdoc ./api/*.js ./api/**/*.js ./app/*.js ./app/**/*.js ./service/*.js ./service/**/*.js -d docs", diff --git a/service/jobs.js b/service/jobs.js index 30f6852..52c85e1 100644 --- a/service/jobs.js +++ b/service/jobs.js @@ -1,16 +1,15 @@ 'use strict'; -const axios = require('axios'); const request = require('request'); const db = require('../app/db') const logger = require('../app/logger'); -// https://developer.flutterwave.com/reference/create-a-transfer -const flutterwaveConfigBuffer = new Buffer(process.env.FLUTTERWAVE_API, 'base64'); -const flutterwaveConfig = JSON.parse(flutterwaveConfigBuffer.toString('ascii')); +var jobs = { + getmarketjobs: function(req, res, next) { + + + -var transfer = { - create: function(req, res, next) { var url = flutterwaveConfig.BaseApiUrl + '/v3/transfers'; var headersOpt = { "Content-Type": "application/json", @@ -21,147 +20,11 @@ var transfer = { "account_number": req.body.account_number, "amount": req.body.amount, "narration": req.body.narration, - "currency": req.body.currency, - "reference": req.body.reference, - "debit_currency": req.body.debit_currency }; - var options = { - headers: headersOpt - }; - logger.info(url); - logger.info(options); + 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 =', req.body.money_transfer_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://stackoverflow.com/questions/53846709/how-do-i-use-axios-within-expressjs - axios.post(url, data, options) - .then(response => { - //res.json(response); - logger.info('-------------------------------'); - logger.info(response.data); - logger.info('-------------------------------'); - var json = { - status: response.status, - statusText: response.statusText, - 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 => { - // https://stackoverflow.com/questions/45017822/catching-error-body-using-axios-post - var errorMessage = err.message; - logger.error(err.message); - //logger.error(err.stack); - //logger.error(err.response.data); - //logger.error(err.response.headers); - if ( err.request ) { - console.log(err.request); - // err.request.response - errorMessage = err.request; - } - if( err.response ) { - console.log(err.response.data); // => the response payload - errorMessage = err.response.data; - } - queryText = 'UPDATE flutterwave SET response=$1 WHERE id=$2'; - db.query(queryText, [errorMessage, 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({ - status: "failure", - message: "Invalid response", - details: errorMessage, - code: typeof err.response !== 'undefined' ? err.response.status : null, - data: typeof err.response !== 'undefined' ? err.response.data : null - }); - }); - } - }); - // Check DB time stamp (integrity check) - db.query('SELECT NOW()', (err, res) => { - if (err) { - throw err; - } - logger.info('time:', res.rows[0]) - }); - }, - get: function(req, res, next) { - var url = flutterwaveConfig.BaseApiUrl + '/v3/transfers/' + req.params.id; - var headersOpt = { - "Authorization": "Bearer " + flutterwaveConfig.SecretKey, - }; - var options = { - headers: headersOpt - }; - logger.info(url); - axios.get(url, options) - .then(response => { - //res.json(response); - logger.info('-------------------------------'); - logger.info(response.data); - logger.info('-------------------------------'); - var json = { - status: response.status, - statusText: response.statusText, - data: response.data - }; - res.json(json); - }) - .catch(err => { - logger.error(err.message); - //logger.error(err.stack); - logger.error(err.response.data); - //logger.error(err.response.headers); - res.send({ - status: "failure", - message: "Invalid response", - details: err.message, - code: err.response.status, - data: err.response.data - }); - }); + + // TODO: Do we save the response in the DB? I assume: YES db.query('SELECT NOW()', (err, res) => { if (err) { @@ -172,4 +35,4 @@ var transfer = { } }; -module.exports = transfer; +module.exports = jobs;