Skip to content

Commit

Permalink
Fix merge conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
sbinlondon committed Sep 18, 2018
2 parents 3fee997 + f7aa704 commit bd922ab
Show file tree
Hide file tree
Showing 11 changed files with 1,669 additions and 1,484 deletions.
2,945 changes: 1,479 additions & 1,466 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"node-sass-middleware": "^0.11.0",
"pg": "^7.4.3",
"pg-promise": "^8.4.6",
"query-string": "^6.1.0",
"querystring": "^0.2.0",
"sequelize": "^4.38.0",
"serve-favicon": "^2.5.0"
Expand Down
24 changes: 13 additions & 11 deletions src/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,31 @@ const background = require('./background');
const resources = require('./resources');
const error = require('./error');
const moreinfo = require('./moreinfo');
const sendinfo = require('./sendinfo');
const results = require('./results');

router.use(bodyParser.urlencoded({extended: true}));
router.use(bodyParser.urlencoded({ extended: true }));
router.get('/', home.get);
router.get('/welcome', welcome.get);
router.get('/background', background.get);
router.get('/resources', resources.get);
router.get('/more-info', moreinfo.get);
router.get('/sendinfo', sendinfo.get); //used to be results.get
router.get('/results', results.get);

// trigger 500 error for testing

if(process.env.NODE_ENV === 'test') {
if (process.env.NODE_ENV === 'test') {
const triggerError = () => (req, res, next) => {
console.log('Testing 500')
try {
throw new Error('This function causes an error')
} catch (error) {
console.log("caught error");
next(error)
}
};
router.get("/error", triggerError());
console.log('Testing 500')
try {
throw new Error('This function causes an error')
} catch (error) {
console.log("caught error");
next(error)
}
};
router.get("/error", triggerError());
}

// client error routes
Expand Down
85 changes: 85 additions & 0 deletions src/controllers/sendinfo.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
const queries = require('../model/index')
const queryString = require('query-string');

exports.get = (req, response) => {
var queryObj = queryString.parseUrl(req.url).query;
var backgroundArr = queryObj.bg.split(",");
var resourceArr = queryObj.rsc.split(",");
console.log("bg Arr is", backgroundArr, "rsc Arr is", resourceArr);

queries.getData(backgroundArr, resourceArr)
.then( dbObj => {
const resultArray = arrangeArray(dbObj.rows);
console.log('resultArray', resultArray);
const outArray = filterByType(resultArray);
console.log('OUTPUT ARRAY', outArray);
//res.render('results', {outArray});
response.send(outArray);
})
.catch(err => console.log(err));

function filterByType(inArray) {
const types = ['meetup', 'online course', 'article', 'classroom course'];
const outArr = []
types.forEach(mytype => {
//outArr[meetup]= filtered result
// setting keys to values from filter function
outArr[mytype] = inArray.filter(function (value) {
return value.resource_type == mytype;
})
})
return outArr;
}
//to arrange repeated resource as {resource_id='1', resource_name='codebar', direct=['age','ethnicity'], indirect=['disability']},....
function arrangeArray(inArray) {
var resultArray = []; //empty array to start with
for (let i = 0; i < inArray.length; i++) {
if (i == 0) {
//populate new resouce in our result array
resultArrIndx = 0;
resultArray.push({
resource_id: inArray[i].resource_id, resource_name: inArray[i].resource_name,
url: inArray[i].url, resource_type: inArray[i].resource_type
});
resultArray[resultArrIndx].direct = [];
resultArray[resultArrIndx].indirect = [];
//if incoming demo_tag_relevance is direct push it into resultArray[resultArrIndx].direct array else
//push into resultArray[resultArrIndx].indirect array
if (inArray[i].relevance === 'direct') {
resultArray[resultArrIndx].direct.push(inArray[i].tag_name);
} else {
resultArray[resultArrIndx].indirect.push(inArray[i].tag_name);
}
resultArrIndx++;
}
else if (resultArray[resultArrIndx - 1].resource_id == inArray[i].resource_id) {
if (inArray[i].demo_tag_relevance === 'direct') {
resultArray[resultArrIndx - 1].direct.push(inArray[i].tag_name);
} else {
resultArray[resultArrIndx - 1].indirect.push(inArray[i].tag_name);
}
}
else {
//populate new resouce in our result array
//create new key demo_tag_relevance and push {tagname:'tagname value', relevance:'rel value'}
resultArray.push({
resource_id: inArray[i].resource_id, resource_name: inArray[i].resource_name,
url: inArray[i].url, resource_type: inArray[i].resource_type
});
resultArray[resultArrIndx].direct = [];
resultArray[resultArrIndx].indirect = [];
//if incoming demo_tag_relevance is direct push it into resultArray[resultArrIndx].direct array else
//push into resultArray[resultArrIndx].indirect array
if (inArray[i].relevance === 'direct') {
resultArray[resultArrIndx].direct.push(inArray[i].tag_name);
} else {
resultArray[resultArrIndx].indirect.push(inArray[i].tag_name);
}
resultArrIndx++;
}
} //end of for loop

return resultArray;
}

}
File renamed without changes.
14 changes: 7 additions & 7 deletions database/db_build.sql → src/database/db_build.sql
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ DROP TYPE IF EXISTS e_relevance CASCADE;
CREATE TYPE e_resource_type AS ENUM ('meetup', 'online course', 'article', 'classroom course' );

CREATE TABLE resource (
id SERIAL PRIMARY KEY,
resource_id SERIAL PRIMARY KEY,
resource_name TEXT NOT NULL,
link TEXT NOT NULL,
url TEXT NOT NULL,
resource_description TEXT NOT NULL,
resource_type e_resource_type,
country VARCHAR(100) DEFAULT NULL,
city VARCHAR(100) DEFAULT NULL

);

INSERT INTO resource (resource_name, link, resource_description, resource_type, country, city) VALUES
INSERT INTO resource (resource_name, url, resource_description, resource_type, country, city) VALUES
('Codebar meetup', 'https://codebar.io/events', 'goal is to enable underrepresented people to learn programming in a safe and collaborative environment and expand their career opportunities..', 'meetup', 'UK', NULL),
('Founders and Coders meetup', 'https://www.meetup.com/founderscoders/','Founders & Coders runs a full-time no-fee coding bootcamp. We run meetups for the general public, but we run even more meetups and workshops for applicants to our programme. ', 'meetup', 'UK', 'london' ),
('Tania Rascia', 'https://www.taniarascia.com/how-i-made-a-career-change-into-web-development/', 'I made a career change into web development in 2015. Before that, I worked as a chef.', 'article', NULL, NULL),
Expand All @@ -32,7 +32,7 @@ INSERT INTO resource (resource_name, link, resource_description, resource_type,
CREATE TYPE e_demographic_tag_name AS ENUM ('age', 'ethnicity', 'disability', 'mental health', 'contacts in industry', 'caring responsibilities', 'education', 'socioeconomic', 'language', 'gender', 'sexuality', 'refugee', 'other');

CREATE TABLE demographic_tag (
id SERIAL PRIMARY KEY,
demographic_tag_id SERIAL PRIMARY KEY,
tag_name e_demographic_tag_name NOT NULL,
demographic_description TEXT
);
Expand All @@ -55,12 +55,12 @@ INSERT INTO demographic_tag (tag_name, demographic_description) VALUES

CREATE TYPE e_relevance AS ENUM ('direct', 'indirect');
CREATE TABLE demographic_resource_link(
resource_id INTEGER REFERENCES resource(id) NOT NULL,
demographic_tag_id INTEGER REFERENCES demographic_tag(id) NOT NULL,
link_resource_id INTEGER REFERENCES resource(resource_id) NOT NULL,
link_demographic_tag_id INTEGER REFERENCES demographic_tag(demographic_tag_id) NOT NULL,
relevance e_relevance
);

INSERT INTO demographic_resource_link (resource_id, demographic_tag_id, relevance) VALUES
INSERT INTO demographic_resource_link (link_resource_id, link_demographic_tag_id, relevance) VALUES
(1, 1, 'direct'),
(1, 2, 'direct'),
(1, 3, 'indirect'),
Expand Down
File renamed without changes.
32 changes: 32 additions & 0 deletions src/model/getData.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const db = require("../database/db_connection");

const getData = (bgArray, rscArray) => {
console.log('INPUTARR', bgArray, rscArray);
var dataQuery = `select resource.resource_id ,resource.resource_name,resource.url, resource.resource_type, demographic_tag. demographic_tag_id, demographic_tag.tag_name, demographic_resource_link.relevance from resource INNER JOIN demographic_resource_link ON resource.resource_id = demographic_resource_link.link_resource_id INNER JOIN demographic_tag ON demographic_resource_link.link_demographic_tag_id = demographic_tag. demographic_tag_id WHERE (demographic_tag.tag_name='${
bgArray[0]
}'`;


//iterator appends users selected demographic tags
for (let i = 1; i < bgArray.length; i++) {
dataQuery += ` OR demographic_tag.tag_name = '${bgArray[i].trim()}'`;
}

dataQuery += `) AND (resource.resource_type = '${rscArray[0].trim()}'`;

for (let i = 1; i < rscArray.length; i++) {
dataQuery += ` OR resource.resource_type = '${rscArray[i].trim()}'`;
}

dataQuery += ')'

console.log("DATAQUERY=", dataQuery);

return new Promise((resolve, reject) => {
db.query(dataQuery)
.then(res => resolve(res))
.catch(err => reject(err));
});
};
module.exports = getData;

13 changes: 13 additions & 0 deletions src/model/get_demo_tag_id.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const db = require("../database/db_connection.js");

const getDemoTagId = demoTag => {
return new Promise((resolve, reject) => {
db.query(
`SELECT demographic_tag.id FROM demographic_tag WHERE tag_name = '${demoTag}'`
)
.then(res => resolve(res))
.catch(err => reject(err));
});
};

module.exports = getDemoTagId;
30 changes: 30 additions & 0 deletions src/model/get_resource_detail.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const db = require("../database/db_connection");

const getResourceDetail = resourceId => {
return new Promise((resolve, reject) => {
db.query(`SELECT * from resource WHERE resource_id ='${resourceId}' `)
.then(res => resolve(res))
.catch(err => reject(err));
});
};

module.exports = getResourceDetail;
console.log("herehere");
getResourceDetail(1)
.then(res => console.log(res.rows))
.catch(err => console.log(err));

// const getResourceDetail = resourceId =>{
// let query = `SELECT * FROM resource WHERE id = '${resourceId}'`;
// db.query(query, (err, res) => {
// if(err){
// cb('Error', null);
// } else {
// cb(null, res);
// }
// })
// }

// module.exports = getResourceDetail;

// console.log("HERE", getResourceDetail(1, callback()));
9 changes: 9 additions & 0 deletions src/model/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const getDemoTagId = require("./get_demo_tag_id");
const getResourceDetail = require("./get_resource_detail");
const getData = require("./getData");

module.exports = {
getDemoTagId: getDemoTagId,
getResourceDetail: getResourceDetail,
getData: getData
};

0 comments on commit bd922ab

Please sign in to comment.