Skip to content

Instantly share code, notes, and snippets.

@wayne-o
Created April 18, 2015 10:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wayne-o/35a720a0b27341807483 to your computer and use it in GitHub Desktop.
Save wayne-o/35a720a0b27341807483 to your computer and use it in GitHub Desktop.
waterline query
/**
* FilteredLineupController
*
* @description :: Server-side logic for managing Filteredlineups
* @help :: See http://links.sailsjs.org/docs/controllers
*/
var winston = require('winston');
module.exports = {
find: function(req, res) {
var name = req.param("name");
var currentUserAttending = req.param("currentUserAttending");
var location = req.param("location");
var sort = req.param("sort");
var eventInstanceSlug = req.param("eventInstanceSlug");
var limit = req.param("limit");
var skip = req.param("skip");
var sortProperty = 'name',
sortDir = 'desc';
//TODO: more checks here to validate it is actually a sort
if (sort !== undefined && sort !== null && sort !== '') {
sortProperty = sort.split('+')[0];
sortDir = sort.split('+')[1];
}
var token = waterlock._utils.allParams(req).access_token || waterlock._utils.allParams(req).token;
waterlock.validator.validateToken(token, function(err, u) {
if (u === null || u === undefined) {
u = {};
}
User.findOne()
.where({
id: u.id
})
.populate('listingEvents')
.then(function(user) {
var attendingIds = new Array();
if (user !== undefined && user != null) {
for (var i = 0; i < user.listingEvents.length; i++) {
var le = user.listingEvents[i];
attendingIds.push(le.id);
}
}
var q = ListingEvent.find()
.where({
eventInstanceSlug: eventInstanceSlug
});
q.populate('users');
q.populate('location');
if (name != undefined && name != null && name !== '') {
q.where({
or: [{
name: {
startsWith: name
}
}, {
location: {
name: {
startsWith: name
}
}
}]
});
}
if (currentUserAttending === 'true' && req.session.user != undefined && req.session.user != null) {
q.where({
or: [{
id: attendingIds
}]
});
}
q.skip(skip);
q.limit(limit);
q.sort(sortProperty);
q.exec(function(err, results) {
if (err) {
winston.error(err);
}
if (results && user !== null) {
for (var i = 0; i < results.length; i++) {
if (attendingIds.indexOf(results[i].id) > -1) {
results[i].currentUserAttending = true;
}
}
}
return res.ok(results);
});
});
});
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment