Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ exports.home = function (aReq, aRes) {
var scriptListQuery = Script.find();

// scriptListQuery: isLib
modelQuery.findOrDefaultIfNull(scriptListQuery, 'isLib', options.librariesOnly, false);
modelQuery.findOrDefaultToNull(scriptListQuery, 'isLib', options.librariesOnly, false);

// scriptListQuery: Defaults
if (options.librariesOnly) {
Expand Down
2 changes: 1 addition & 1 deletion controllers/issue.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ exports.list = function (aReq, aRes, aNext) {
// discussionListQuery: Optionally filter discussion list
options.allIssues = !aReq.params.open && !options.isOwner || listAll;
if (!options.allIssues) {
modelQuery.findOrDefaultIfNull(discussionListQuery, 'open', options.openIssuesOnly, true);
modelQuery.findOrDefaultToNull(discussionListQuery, 'open', options.openIssuesOnly, true);
}

// Page metadata
Expand Down
4 changes: 1 addition & 3 deletions controllers/moderation.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,7 @@ exports.removedItemListPage = function (aReq, aRes, aNext) {
var removedItemListQuery = Remove.find();

// removedItemListQuery: byModel
if (options.byModel) {
modelQuery.findOrDefaultIfNull(removedItemListQuery, 'model', options.byModel, null);
}
modelQuery.findOrUseDefaultIfNull(removedItemListQuery, 'model', options.byModel, null);

// removedItemListQuery: Defaults
switch (options.byModel) {
Expand Down
42 changes: 33 additions & 9 deletions libs/modelQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,43 @@ var _ = require('underscore');

var getDefaultPagination = require('../libs/templateHelpers').getDefaultPagination;

var findOrDefaultIfNull = function (aQuery, aKey, aValue, aDefaultValue) {
// Transform a "tri-state" value condition to null for true/false/null stored DB values
// See also #701
var findOrDefaultToNull = function (aQuery, aKey, aValue, aDefaultValue) {
var conditions = [];
var condition = {};

condition[aKey] = aValue;
conditions.push(condition);

if (aValue == aDefaultValue) {
condition = {};
condition[aKey] = null;
conditions.push(condition);
}

aQuery.and({ $or: conditions });
};
exports.findOrDefaultToNull = findOrDefaultToNull;

var findOrUseDefaultIfNull = function (aQuery, aKey, aValue, aDefaultValue) {
var conditions = [];
var condition = {};

if (aValue === null) {
if (aDefaultValue !== null) {
aValue = aDefaultValue;
} else {
return;
}
}

condition[aKey] = aValue;
conditions.push(condition);

aQuery.and({ $or: conditions });
};
exports.findOrDefaultIfNull = findOrDefaultIfNull;
exports.findOrUseDefaultIfNull = findOrUseDefaultIfNull;

var orderDirs = ['asc', 'desc'];
var parseModelListSort = function (aModelListQuery, aOrderBy, aOrderDir, aDefaultSortFn) {
Expand Down Expand Up @@ -284,7 +308,7 @@ exports.applyUserListQueryDefaults = function (aUserListQuery, aOptions, aReq) {
var removedItemUserListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Users',
searchBarPlaceholder: 'Search Removed Items in User',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'User' }
],
Expand All @@ -298,7 +322,7 @@ exports.applyRemovedItemUserListQueryDefaults = function (aRemovedItemUserListQu
var removedItemScriptListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Scripts',
searchBarPlaceholder: 'Search Removed Items in Script',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'Script' }
],
Expand All @@ -312,7 +336,7 @@ exports.applyRemovedItemScriptListQueryDefaults = function (aRemovedItemScriptLi
var removedItemCommentListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Comments',
searchBarPlaceholder: 'Search Removed Items in Comment',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'Comment' }
],
Expand All @@ -326,7 +350,7 @@ exports.applyRemovedItemCommentListQueryDefaults = function (aRemovedItemComment
var removedItemDiscussionListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Discussions',
searchBarPlaceholder: 'Search Removed Items in Discussion',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'Discussion' }
],
Expand All @@ -340,7 +364,7 @@ exports.applyRemovedItemDiscussionListQueryDefaults = function (aRemovedItemDisc
var removedItemFlagListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Flags',
searchBarPlaceholder: 'Search Removed Items in Flag',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'Flag' }
],
Expand All @@ -354,7 +378,7 @@ exports.applyRemovedItemFlagListQueryDefaults = function (aRemovedItemFlagListQu
var removedItemGroupListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Groups',
searchBarPlaceholder: 'Search Removed Items in Group',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'Group' }
],
Expand All @@ -368,7 +392,7 @@ exports.applyRemovedItemGroupListQueryDefaults = function (aRemovedItemGroupList
var removedItemVoteListQueryDefaults = {
defaultSort: '-removed',
parseSearchQueryFn: parseRemovedItemSearchQuery,
searchBarPlaceholder: 'Search Removed Items in Votes',
searchBarPlaceholder: 'Search Removed Items in Vote',
searchBarFormHiddenVariables: [
{ name: 'byModel', value: 'Vote' }
],
Expand Down