|
@@ -15,12 +15,15 @@ import {
|
|
OPERATOR_ASSIGNEE,
|
|
OPERATOR_ASSIGNEE,
|
|
OPERATOR_BOARD,
|
|
OPERATOR_BOARD,
|
|
OPERATOR_COMMENT,
|
|
OPERATOR_COMMENT,
|
|
|
|
+ OPERATOR_CREATED_AT,
|
|
|
|
+ OPERATOR_CREATOR,
|
|
OPERATOR_DUE,
|
|
OPERATOR_DUE,
|
|
OPERATOR_HAS,
|
|
OPERATOR_HAS,
|
|
OPERATOR_LABEL,
|
|
OPERATOR_LABEL,
|
|
OPERATOR_LIMIT,
|
|
OPERATOR_LIMIT,
|
|
OPERATOR_LIST,
|
|
OPERATOR_LIST,
|
|
OPERATOR_MEMBER,
|
|
OPERATOR_MEMBER,
|
|
|
|
+ OPERATOR_MODIFIED_AT,
|
|
OPERATOR_SORT,
|
|
OPERATOR_SORT,
|
|
OPERATOR_STATUS,
|
|
OPERATOR_STATUS,
|
|
OPERATOR_SWIMLANE,
|
|
OPERATOR_SWIMLANE,
|
|
@@ -163,7 +166,7 @@ function buildSelector(queryParams) {
|
|
|
|
|
|
if (queryParams.hasOperator(OPERATOR_BOARD)) {
|
|
if (queryParams.hasOperator(OPERATOR_BOARD)) {
|
|
const queryBoards = [];
|
|
const queryBoards = [];
|
|
- queryParams.hasOperator(OPERATOR_BOARD).forEach(query => {
|
|
|
|
|
|
+ queryParams.getPredicates(OPERATOR_BOARD).forEach(query => {
|
|
const boards = Boards.userSearch(userId, {
|
|
const boards = Boards.userSearch(userId, {
|
|
title: new RegExp(escapeForRegex(query), 'i'),
|
|
title: new RegExp(escapeForRegex(query), 'i'),
|
|
});
|
|
});
|
|
@@ -240,7 +243,7 @@ function buildSelector(queryParams) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- [OPERATOR_DUE, 'createdAt', 'modifiedAt'].forEach(field => {
|
|
|
|
|
|
+ [OPERATOR_DUE, OPERATOR_CREATED_AT, OPERATOR_MODIFIED_AT].forEach(field => {
|
|
if (queryParams.hasOperator(field)) {
|
|
if (queryParams.hasOperator(field)) {
|
|
selector[field] = {};
|
|
selector[field] = {};
|
|
const predicate = queryParams.getPredicate(field);
|
|
const predicate = queryParams.getPredicate(field);
|
|
@@ -251,52 +254,42 @@ function buildSelector(queryParams) {
|
|
const queryUsers = {};
|
|
const queryUsers = {};
|
|
queryUsers[OPERATOR_ASSIGNEE] = [];
|
|
queryUsers[OPERATOR_ASSIGNEE] = [];
|
|
queryUsers[OPERATOR_MEMBER] = [];
|
|
queryUsers[OPERATOR_MEMBER] = [];
|
|
|
|
+ queryUsers[OPERATOR_CREATOR] = [];
|
|
|
|
|
|
if (queryParams.hasOperator(OPERATOR_USER)) {
|
|
if (queryParams.hasOperator(OPERATOR_USER)) {
|
|
|
|
+ const users = [];
|
|
queryParams.getPredicates(OPERATOR_USER).forEach(username => {
|
|
queryParams.getPredicates(OPERATOR_USER).forEach(username => {
|
|
const user = Users.findOne({ username });
|
|
const user = Users.findOne({ username });
|
|
if (user) {
|
|
if (user) {
|
|
- queryUsers[OPERATOR_MEMBER].push(user._id);
|
|
|
|
- queryUsers[OPERATOR_ASSIGNEE].push(user._id);
|
|
|
|
|
|
+ users.push(user._id);
|
|
} else {
|
|
} else {
|
|
errors.addNotFound(OPERATOR_USER, username);
|
|
errors.addNotFound(OPERATOR_USER, username);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+ if (users.length) {
|
|
|
|
+ selector.$and.push({
|
|
|
|
+ $or: [{ members: { $in: users } }, { assignees: { $in: users } }],
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- [OPERATOR_MEMBER, OPERATOR_ASSIGNEE].forEach(key => {
|
|
|
|
|
|
+ [OPERATOR_MEMBER, OPERATOR_ASSIGNEE, OPERATOR_CREATOR].forEach(key => {
|
|
if (queryParams.hasOperator(key)) {
|
|
if (queryParams.hasOperator(key)) {
|
|
- queryParams.getPredicates(key).forEach(query => {
|
|
|
|
- const users = Users.find({
|
|
|
|
- username: query,
|
|
|
|
- });
|
|
|
|
- if (users.count()) {
|
|
|
|
- users.forEach(user => {
|
|
|
|
- queryUsers[key].push(user._id);
|
|
|
|
- });
|
|
|
|
|
|
+ const users = [];
|
|
|
|
+ queryParams.getPredicates(key).forEach(username => {
|
|
|
|
+ const user = Users.findOne({ username });
|
|
|
|
+ if (user) {
|
|
|
|
+ users.push(user._id);
|
|
} else {
|
|
} else {
|
|
- errors.addNotFound(key, query);
|
|
|
|
|
|
+ errors.addNotFound(key, username);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+ if (users.length) {
|
|
|
|
+ selector[key] = { $in: users };
|
|
|
|
+ }
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
- if (
|
|
|
|
- queryUsers[OPERATOR_MEMBER].length &&
|
|
|
|
- queryUsers[OPERATOR_ASSIGNEE].length
|
|
|
|
- ) {
|
|
|
|
- selector.$and.push({
|
|
|
|
- $or: [
|
|
|
|
- { members: { $in: queryUsers[OPERATOR_MEMBER] } },
|
|
|
|
- { assignees: { $in: queryUsers[OPERATOR_ASSIGNEE] } },
|
|
|
|
- ],
|
|
|
|
- });
|
|
|
|
- } else if (queryUsers[OPERATOR_MEMBER].length) {
|
|
|
|
- selector.members = { $in: queryUsers[OPERATOR_MEMBER] };
|
|
|
|
- } else if (queryUsers[OPERATOR_ASSIGNEE].length) {
|
|
|
|
- selector.assignees = { $in: queryUsers[OPERATOR_ASSIGNEE] };
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (queryParams.hasOperator(OPERATOR_LABEL)) {
|
|
if (queryParams.hasOperator(OPERATOR_LABEL)) {
|
|
queryParams.getPredicates(OPERATOR_LABEL).forEach(label => {
|
|
queryParams.getPredicates(OPERATOR_LABEL).forEach(label => {
|
|
const queryLabels = [];
|
|
const queryLabels = [];
|
|
@@ -443,9 +436,9 @@ function buildSelector(queryParams) {
|
|
}
|
|
}
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
// eslint-disable-next-line no-console
|
|
- // console.log('selector:', selector);
|
|
|
|
|
|
+ console.log('selector:', selector);
|
|
// eslint-disable-next-line no-console
|
|
// eslint-disable-next-line no-console
|
|
- // console.log('selector.$and:', selector.$and);
|
|
|
|
|
|
+ console.log('selector.$and:', selector.$and);
|
|
|
|
|
|
const query = new Query();
|
|
const query = new Query();
|
|
query.selector = selector;
|
|
query.selector = selector;
|