Moves to the loader and work on the user query to add pagination and action type.

This commit is contained in:
gaba
2017-03-07 07:29:32 +01:00
parent 0fe456f574
commit d06a5d37f0
5 changed files with 31 additions and 22 deletions
@@ -1,15 +1,12 @@
query Users {
usersFlagged {
query Users ($n: ACTION_TYPE) {
users (query:{action_type: $n}){
id
username
status
roles
actions{
id
reason
user {
username
}
created_at
}
action_summaries {
count
-7
View File
@@ -19,13 +19,6 @@ const getUsersByQuery = ({user}, {ids, limit, cursor, sort}) => {
let users = UserModel.find();
// Only administrators can search for users
if (user == null || !user.hasRoles('ADMIN')) {
return null;
}
users = users.find();
if (ids) {
users = users.find({
id: {
+12 -6
View File
@@ -76,18 +76,24 @@ const RootQuery = {
// This endpoint is used for loading the user moderation queues (users whose username has been flagged),
// so hide it in the event that we aren't an admin.
usersFlagged(_, args, {user, loaders: {Users, Actions}}) {
users(_, {query: {action_type, limit, cursor, sort}}, {user, loaders: {Users, Actions}}) {
if (user == null || !user.hasRoles('ADMIN')) {
return null;
}
return Actions.getByTypes({action_type: 'FLAG', item_type: 'USERS'})
.then((ids) => {
const query = {limit, cursor, sort};
// Perform the query using the available resolver.
return Users.getByQuery({ids});
});
if (action_type) {
return Actions.getByTypes({action_type, item_type: 'USERS'})
.then((ids) => {
// Perform the query using the available resolver.
return Users.getByQuery({ids, limit, cursor, sort});
});
}
return Users.getByQuery(query);
}
};
+9
View File
@@ -27,6 +27,15 @@ const User = {
return roles;
}
return null;
},
users({id}, _, {loaders: {Users}, user}) {
// Only administrators can search for users
if (user && user.hasRoles('ADMIN')) {
return Users.getByQuery();
}
return null;
}
};
+7 -3
View File
@@ -34,7 +34,7 @@ type User {
action_summaries: [FlagActionSummary]
# Actions completed on the parent.
actions: [FlagAction]
actions: [Action]
# the current roles of the user.
roles: [USER_ROLES]
@@ -45,6 +45,9 @@ type User {
# returns all comments based on a query.
comments(query: CommentsQuery): [Comment]
# returns all users based on a query.
users(query: UsersQuery): [User]
# returns user status
status: USER_STATUS
}
@@ -60,8 +63,9 @@ type Tag {
created_at: Date!
}
# UsersQuery allows the ability to query users by a specific methods.
# UsersQuery allows the ability to query users by a specific fields.
input UsersQuery {
action_type: ACTION_TYPE
# Limit the number of results to be returned.
limit: Int = 10
@@ -512,7 +516,7 @@ type RootQuery {
metrics(from: Date!, to: Date!, sort: ACTION_TYPE!, limit: Int = 10): [Asset]
# Users returned based on a query.
usersFlagged(query: UsersQuery): [User]
users(query: UsersQuery): [User]
}
################################################################################