Skip to content

Instantly share code, notes, and snippets.

@ayoola-solomon
Last active March 13, 2016 13:03
Show Gist options
  • Save ayoola-solomon/180912384ffc25037c42 to your computer and use it in GitHub Desktop.
Save ayoola-solomon/180912384ffc25037c42 to your computer and use it in GitHub Desktop.
Refactoring a nodejs function
var peers = function(req, res) {
var peers = [];
models.Fellow
.findById(req.params.id)
.then(function(fellow) {
if (fellow) {
switch (fellow.level) {
case 'D0A - MONTH ONE':
case 'D0B - SIMULATIONS':
case 'D0C - SIMULATIONS':
fetchTeamAndCohortPeers(req, res, fellow, peers);
break;
case 'D1 Jr Consultant':
case 'D2 Consultant':
case 'D3 Consultant':
case 'D4 Consultant':
fetchPeers(req, res, fellow, peers);
break;
default:
}
} else {
res.status(404).json({
message: 'Fellow does not exist'
});
}
})
.catch(function(err) {
logger.error(err);
res.status(500).json(err);
});
}
};
var fetchTeamAndCohortPeers = function(req, res, fellow, peers) {
models.Team
.findById(fellow.team_id, {
include: [ models.Fellow ]
})
.then(function(team) {
if (team) {
_.each(team.Fellows, function(peer) {
if (peer.uid !== fellow.uid) {
peers.push(peer);
}
})
fetchCohortPeers(req, res, fellow, peers);
}
else {
fetchCohortPeers(req, res, fellow, peers);
}
})
.catch(function(err) {
logger.error(err);
res.status(500).json(err);
});
};
var fetchCohortPeers = function(req, res, fellow, peers) {
models.Cohort
.findById(fellow.cohort_id, {
include: [ models.Fellow ]
})
.then(function(cohort) {
if (cohort) {
_.each(cohort.Fellows, function(peer) {
if (peer.uid !== fellow.uid) {
peers.push(peer);
}
})
res.status(200).json(peers);
}
else {
res.status(404).json({
message: 'Cohort does not exist'
});
}
})
.catch(function(err) {
logger.error(err);
res.status(500).json(err);
});
};
var fetchPeers = function(req, res, fellow, peers) {
var where = {
$or: [
{
level: 'D1 Jr Consultant'
},
{
level: 'D2 Consultant'
},
{
level: 'D3 Consultant'
},
{
level: 'D4 Consultant'
}
]
}
models.Fellow
.findAll({
where: where,
order: 'first_name ASC'
})
.then(function(fellows) {
if (fellows) {
_.each(fellows, function(peer) {
if (peer.uid !== fellow.uid) {
peers.push(peer);
};
})
res.status(200).json(peers);
}
else {
res.status(404).json({
message: 'Peers does not exist'
});
}
})
.catch(function(err) {
logger.error(err);
res.status(500).json(err);
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment