wip
This commit is contained in:
parent
7602e8f938
commit
e14ea1fe61
1 changed files with 48 additions and 0 deletions
|
@ -0,0 +1,48 @@
|
|||
import $ from 'cafy'; import ID from '../../../../../cafy-id';
|
||||
import UserList from '../../../../../models/user-list';
|
||||
import User from '../../../../../models/user';
|
||||
|
||||
/**
|
||||
* Add a user to a user list
|
||||
*/
|
||||
module.exports = async (params, me) => new Promise(async (res, rej) => {
|
||||
// Get 'listId' parameter
|
||||
const [listId, listIdErr] = $(params.listId).type(ID).$;
|
||||
if (listIdErr) return rej('invalid listId param');
|
||||
|
||||
// Fetch the list
|
||||
const userList = await UserList.findOne({
|
||||
_id: listId,
|
||||
userId: me._id,
|
||||
});
|
||||
|
||||
if (userList == null) {
|
||||
return rej('list not found');
|
||||
}
|
||||
|
||||
// Get 'userId' parameter
|
||||
const [userId, userIdErr] = $(params.userId).type(ID).$;
|
||||
if (userIdErr) return rej('invalid userId param');
|
||||
|
||||
// Fetch the user
|
||||
const user = await User.findOne({
|
||||
_id: userId
|
||||
});
|
||||
|
||||
if (user == null) {
|
||||
return rej('user not found');
|
||||
}
|
||||
|
||||
if (userList.userIds.map(id => id.toHexString()).includes(user._id.toHexString())) {
|
||||
return rej('the user already added');
|
||||
}
|
||||
|
||||
// Push the user
|
||||
await UserList.update({ _id: userList._id }, {
|
||||
$push: {
|
||||
userIds: user._id
|
||||
}
|
||||
});
|
||||
|
||||
res();
|
||||
});
|
Loading…
Reference in a new issue