forked from FoundKeyGang/FoundKey
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