Skip to content

Commit

Permalink
Remove challenges related features
Browse files Browse the repository at this point in the history
Add script to launch test db docker container
  • Loading branch information
nipasoz13 committed Sep 30, 2019
1 parent f6c518f commit b4202a7
Show file tree
Hide file tree
Showing 10 changed files with 19 additions and 290 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.env
node_modules/
.idea
.vscode
.vscode
/humanity-in-business-back-end.iml
31 changes: 0 additions & 31 deletions sql/setup.sql
Original file line number Diff line number Diff line change
Expand Up @@ -28,37 +28,6 @@ create table if not exists users
password varchar(255) not null
);

-- Challenges
create table if not exists challenges
(
id serial not null
constraint challenges_pkey
primary key,
title varchar(255),
description text,
location varchar(255),
challenge_date date,
points integer default 0 not null,
image_url varchar(255)
);

-- User Challenges
create table if not exists user_challenges
(
id serial not null
constraint user_challenges_pkey
primary key,
user_id integer not null
constraint fk_uc_user
references users
on update cascade on delete cascade,
challenge_id integer not null
constraint fk_uc_challenge
references challenges
on update cascade on delete cascade,
completed smallint default '0' :: smallint
);

-- Communities
create table if not exists communities
(
Expand Down
4 changes: 1 addition & 3 deletions sql/tearDown.sql
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
-- Delete Tables
drop table if exists user_challenges;
drop table if exists teams_members;
drop table if exists users;
drop table if exists teams;
drop table if exists projects;
drop table if exists events;
drop table if exists communities;
drop table if exists companies;
drop table if exists challenges;
drop table if exists companies;
11 changes: 0 additions & 11 deletions src/controllers/UserController.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,3 @@ exports.getProfile = async (req, res, next) => {
}
next();
}

exports.getCompletedChallenges = async (req, res, next) => {
try {
const response = await userService.getCompletedChallenges(req.params.userId);
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
next();
};
92 changes: 2 additions & 90 deletions src/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ const errs = require('restify-errors');
const UserService = require('../services/UserService');
const CompanyService = require('../services/CompanyService');
const SDGService = require('../services/SDGService');
const ChallengeService = require('../services/ChallengeService');
const SkillService = require('../services/SkillService');

const UserController = require('../controllers/UserController');
Expand All @@ -16,7 +15,6 @@ const TeamController = require('../controllers/TeamController');
const userService = new UserService();
const companyService = new CompanyService();
const sdgService = new SDGService();
const challengeService = new ChallengeService();
const skillService = new SkillService();

module.exports = function (server) {
Expand Down Expand Up @@ -95,63 +93,13 @@ module.exports = function (server) {
next();
}

const getCompanyLeaderBoard = async (req, res, next) => {
try {
const response = await companyService.getCompanyLeaderBoard(req.params.id);
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
next();
}

const getCompanyBadges = async (req, res, next) => {
try {
const response = await companyService.getBadges(req.params.id);
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
next();
}

const getSDG = async (req, res, next) => {
try {
const response = await sdgService.getSDG(req.params.sdgId);
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
next();
}

const addChallengeToUser = async (req, res, next) => {
if (req && req.body) {
try {
const challengeData = {
user_id: req.body.user_id || 1,
challenge_id: req.body.challenge_id || 1
};

const response = await challengeService.addChallengeToUser(challengeData);
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
} else {
next(new errs.BadRequestError('Invalid request'));
}

next();
}

const getChallenge = async (req, res, next) => {
const getSDG = async (req, res, next) => {
try {
const response = await challengeService.getChallenge(req.params.challengeId);
const response = await sdgService.getSDG(req.params.sdgId);
res.send(response);
} catch (error) {
console.log(error)
Expand All @@ -160,30 +108,6 @@ module.exports = function (server) {
next();
}


const getUpcomingChallenges = async (req, res, next) => {
try {
const response = await userService.getUpcomingChallenges(req.params.userId);
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
next();
};

const getAllUpcomingChallenges = async (req, res, next) => {
try {
const response = await challengeService.getAllUpcomingChallenges();
res.send(response);
} catch (error) {
console.log(error)
next(error)
}
next();
};


const getAllSkills = async (req, res, next) => {
try {
const response = await skillService.getAllSkills();
Expand All @@ -207,9 +131,6 @@ module.exports = function (server) {
server.post('/register', register);
server.post('/user/:userId/sdg', UserController.addSDGs);

// User
server.get('/user/:userId/challenges/completed', UserController.getCompletedChallenges);

// Profile Page
server.get('/profile/:profileId', UserController.getProfile);

Expand All @@ -230,22 +151,13 @@ module.exports = function (server) {
server.get('/company/:id', getCompany);
server.get('/company', getAllCompanies);
server.post('/company', postCompany);
server.get('/leaderboard/company/:id', getCompanyLeaderBoard);
//TODO: Change to /company/:id/badge
server.get('/badges/company/:id', getCompanyBadges);

server.get('/company/:id/sdg', CompanyController.getCompanySDGs);

// SDG Endpoints
server.get('/sdg/:sdgId', getSDG);

// Challenge Endpoint
server.post('/addChallengeToUser', addChallengeToUser);
server.get('/challenge/:challengeId', getChallenge);
server.get('/challenges/upcoming/:userId', getUpcomingChallenges);
server.get('/challenges/upcoming', getAllUpcomingChallenges);

// Skills Endpoint
server.get('/skills', getAllSkills);

}
55 changes: 0 additions & 55 deletions src/services/ChallengeService.js

This file was deleted.

34 changes: 0 additions & 34 deletions src/services/CompanyService.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,40 +39,6 @@ class CompanyService {
return { id : rows[0].id };
}

async getCompanyLeaderBoard(companyId) {
try {
const {rows} = await db.query(`SELECT u.full_name AS name, SUM(c.points) AS points, u.title
FROM users u INNER JOIN user_challenges uc ON u.id = uc.user_id
INNER JOIN challenges c ON uc.challenge_id = c.id WHERE company_id = $1
AND uc.completed = 1 GROUP BY u.id ORDER BY points DESC`,
[companyId]);

return rows;
} catch (error) {
console.log(error)
throw Error('Failed to get company leader board')
}
}

async getBadges(companyId) {
try {
const {rows} = await db.query(`SELECT DISTINCT(b.id), b.name
FROM challenges c
INNER JOIN challenge_badges cb ON cb.challenge_id = c.id
INNER JOIN badges b ON b.id = cb.badge_id
INNER JOIN user_challenges uc ON uc.challenge_id = c.id
INNER JOIN users u ON u.id = uc.user_id
WHERE u.company_id = $1
AND uc.completed = 1`,
[companyId]);

return rows;
} catch (error) {
console.log(error)
throw Error('Failed to get company badges')
}
}


async getSDGs(companyId) {
try {
Expand Down
54 changes: 3 additions & 51 deletions src/services/UserService.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,64 +84,16 @@ class UserService {
const {rows} = await db.query('select u.full_name, u.email, u.title, u.image_url, c.id as company_id, c.name as company_name, ' +
'c.url, c.image_url from users u join companies c on u.company_id = c.id where u.id = $1',
[profileId]);
const profile = rows[0]

try {
const {rows} = await db.query('select SUM(ch.points) as total_points from users u left join user_challenges uc on u.id = uc.user_id left join challenges ch on ch.id = uc.challenge_id where u.id = $1 and uc.completed = 1 group by u.id;',
[profileId]);
if (rows.length > 0) {
profile.total_points = rows[0].total_points
} else {
profile.total_points = 0
}
} catch (error) {
console.log(error)
profile.total_points = 0
}
const profile = rows[0];
profile.total_points = 0;

return profile
} catch (error) {
console.log(error)
throw Error('Failed to get profile')
}
}

async getUpcomingChallenges(userId) {
try {
const {rows} = await db.query(`SELECT distinct (c.id), c.title, c.description, c.challenge_date, c.points, c.image_url
FROM users u
INNER JOIN user_skills us ON us.user_id = u.id
INNER JOIN user_sdgs usdgs ON usdgs.user_id = u.id
INNER JOIN skill_challenges sc ON sc.skill_id = us.skill_id
INNER JOIN sdg_challenges sch ON sch.sdg_id = usdgs.sdg_id
INNER JOIN challenges c ON c.id = sc.challenge_id
WHERE c.challenge_date > NOW() AND u.id = $1`,
[userId]);

return rows;
} catch (error) {
console.log(error);
throw Error('Failed to get upcoming challenges')
}
}

async getCompletedChallenges(userId) {
try {
const {rows} = await db.query(`SELECT distinct (c.id), c.title, c.description, c.challenge_date, c.points, c.image_url
FROM users u
INNER JOIN user_challenges uc ON uc.user_id = u.id
INNER JOIN challenges c ON c.id = uc.challenge_id
WHERE uc.completed = 1
AND u.id = $1
ORDER BY c.challenge_date DESC `,
[userId]);

return rows;
} catch (error) {
console.log(error);
throw Error('Failed to get completed challenges')
}
}


async addSDGs(user_id, sdg_ids) {
const values = [user_id].concat(sdg_ids);
Expand Down
Loading

0 comments on commit b4202a7

Please sign in to comment.