Skip to content

Commit 6336bf1

Browse files
committed
rename db_variable names, construct getData promise to query database, realtes to issue #25
1 parent 83c794b commit 6336bf1

File tree

6 files changed

+132
-23
lines changed

6 files changed

+132
-23
lines changed

src/database/db_build.sql

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ DROP TYPE IF EXISTS e_relevance CASCADE;
1111
CREATE TYPE e_resource_type AS ENUM ('meetup', 'online course', 'article', 'classroom course' );
1212

1313
CREATE TABLE resource (
14-
id SERIAL PRIMARY KEY,
14+
resource_id SERIAL PRIMARY KEY,
1515
resource_name TEXT NOT NULL,
16-
link TEXT NOT NULL,
16+
url TEXT NOT NULL,
1717
resource_description TEXT NOT NULL,
1818
resource_type e_resource_type,
1919
country VARCHAR(100) DEFAULT NULL,
2020
city VARCHAR(100) DEFAULT NULL
2121

2222
);
2323

24-
INSERT INTO resource (resource_name, link, resource_description, resource_type, country, city) VALUES
24+
INSERT INTO resource (resource_name, url, resource_description, resource_type, country, city) VALUES
2525
('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),
2626
('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' ),
2727
('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),
@@ -32,7 +32,7 @@ INSERT INTO resource (resource_name, link, resource_description, resource_type,
3232
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');
3333

3434
CREATE TABLE demographic_tag (
35-
id SERIAL PRIMARY KEY,
35+
demographic_tag_id SERIAL PRIMARY KEY,
3636
tag_name e_demographic_tag_name NOT NULL,
3737
demographic_description TEXT
3838
);
@@ -55,12 +55,12 @@ INSERT INTO demographic_tag (tag_name, demographic_description) VALUES
5555

5656
CREATE TYPE e_relevance AS ENUM ('direct', 'indirect');
5757
CREATE TABLE demographic_resource_link(
58-
resource_id INTEGER REFERENCES resource(id) NOT NULL,
59-
demographic_tag_id INTEGER REFERENCES demographic_tag(id) NOT NULL,
58+
link_resource_id INTEGER REFERENCES resource(resource_id) NOT NULL,
59+
link_demographic_tag_id INTEGER REFERENCES demographic_tag(demographic_tag_id) NOT NULL,
6060
relevance e_relevance
6161
);
6262

63-
INSERT INTO demographic_resource_link (resource_id, demographic_tag_id, relevance) VALUES
63+
INSERT INTO demographic_resource_link (link_resource_id, link_demographic_tag_id, relevance) VALUES
6464
(1, 1, 'direct'),
6565
(1, 2, 'direct'),
6666
(1, 3, 'indirect'),

src/model/getData.js

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
const db = require("../database/db_connection");
2+
var inputArray = ["age"];
3+
const getResource = inputArray => {
4+
var dataQuery = `select resource.resource_id ,resource.resource_name,resource.url, 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 = '${
5+
inputArray[0]
6+
}'`;
7+
// 'refugee' OR demographic_tag.tag_name = 'ethnicity' OR demographic_tag.tag_name = 'age' " ;
8+
9+
//iterator appends users selected demographic tags
10+
for (let i = 0; i < inputArray.length - 1; i++) {
11+
dataQuery += ` OR demographic_tag.tag_name = '${inputArray[i]}'`;
12+
}
13+
console.log("DATAQUERY=", dataQuery);
14+
15+
return new Promise((resolve, reject) => {
16+
db.query(dataQuery)
17+
.then(res => resolve(res))
18+
.catch(err => reject(err));
19+
});
20+
};
21+
module.exports = getResource;
22+
23+
console.log("HERE");
24+
25+
// getResource(['age', 'disability', 'gender'])
26+
// .then(res => console.log(res.rows))
27+
// .catch(err => console.log(err))
28+
const resultArr = getResource(["age", "disability", "gender"])
29+
.then(res => {
30+
var resultArr = res.rows;
31+
var newAns = resultArr.reduce(reducer);
32+
console.log("HELLO", newAns);
33+
})
34+
.catch(err => console.log(err));
35+
36+
////////
37+
38+
//myArray.reduce(reducer)
39+
// var myarr = [1, 2, 3];
40+
// const reducer = (accumulator, currentvalue) => {
41+
// return accumulator + currentvalue;
42+
// };
43+
44+
// var sum = myarr.reduce(reducer);
45+
// console.log(sum);
46+
var accumulator = []; //empty array to start with
47+
const reducer = (accumulator, currentvalue) => {
48+
// accumulator.forEach(function(element) {
49+
// if (element.resource_id == currentvalue.resource_id) {
50+
// //if one of the relevance is direct set our result's relevance to direct
51+
// if (element.relevance == "direct" || currentvalue.relevance == "direct") {
52+
// element.relevane = "direct";
53+
// }
54+
// } else {
55+
// //populate new resouce in our result array
56+
// accumulator.push(currentvalue);
57+
// }
58+
// });
59+
for (let i = 0; i < accumulator.length; i++) {
60+
if (accumulator[i].resource_id == currentvalue.resource_id) {
61+
if (
62+
accumulator[i].relevance == "direct" ||
63+
currentvalue.relevance == "direct"
64+
) {
65+
accumulator[i].relevance = "direct";
66+
}
67+
} else {
68+
//populate new resouce in our result array
69+
accumulator.push(currentvalue);
70+
}
71+
}
72+
};
73+
74+
//var newAns = resultArr.reduce(reducer);
75+
//console.log("HELLO", newAns);

src/model/get_age_resource.js

-13
This file was deleted.

src/model/get_demo_tag_id.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const db = require("../database/db_connection.js");
2+
3+
const getDemoTagId = demoTag => {
4+
return new Promise((resolve, reject) => {
5+
db.query(
6+
`SELECT demographic_tag.id FROM demographic_tag WHERE tag_name = '${demoTag}'`
7+
)
8+
.then(res => resolve(res))
9+
.catch(err => reject(err));
10+
});
11+
};
12+
13+
module.exports = getDemoTagId;

src/model/get_resource_detail.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
const db = require("../database/db_connection");
2+
3+
const getResourceDetail = resourceId => {
4+
return new Promise((resolve, reject) => {
5+
db.query(`SELECT * from resource WHERE id ='${resourceId}' `)
6+
.then(res => resolve(res))
7+
.catch(err => reject(err));
8+
});
9+
};
10+
11+
module.exports = getResourceDetail;
12+
console.log("herehere");
13+
getResourceDetail(1)
14+
.then(res => console.log(res.rows))
15+
.catch(err => console.log(err));
16+
17+
// const getResourceDetail = resourceId =>{
18+
// let query = `SELECT * FROM resource WHERE id = '${resourceId}'`;
19+
// db.query(query, (err, res) => {
20+
// if(err){
21+
// cb('Error', null);
22+
// } else {
23+
// cb(null, res);
24+
// }
25+
// })
26+
// }
27+
28+
// module.exports = getResourceDetail;
29+
30+
// console.log("HERE", getResourceDetail(1, callback()));

src/model/index.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
const getDemoTagId = require('./get_age_resource');
1+
const getDemoTagId = require("./get_demo_tag_id");
2+
const getResourceDetail = require("./get_resource_detail");
3+
const getResource = require("./getResource");
24

35
module.exports = {
4-
getDemoTagId: getDemoTagId
5-
};
6+
getDemoTagId: getDemoTagId,
7+
getResourceDetail: getResourceDetail,
8+
getResource: getResource
9+
};

0 commit comments

Comments
 (0)