This commit is contained in:
syuilo
2018-04-25 06:34:50 +09:00
parent 1a13c7e0b1
commit 1ba5dfd79c
4 changed files with 50 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
/**
* Module dependencies
*/
import $ from 'cafy';
import UserList, { pack } from '../../../../../models/user-list';
/**
* Create a user list
*/
module.exports = async (params, user) => new Promise(async (res, rej) => {
// Get 'title' parameter
const [title, titleErr] = $(params.title).string().range(1, 100).$;
if (titleErr) return rej('invalid title param');
// insert
const userList = await UserList.insert({
createdAt: new Date(),
userId: user._id,
title: title,
userIds: []
});
// Response
res(await pack(userList));
});

View File

@@ -0,0 +1,13 @@
import UserList, { pack } from '../../../../../models/user-list';
/**
* Add a user to a user list
*/
module.exports = async (params, me) => new Promise(async (res, rej) => {
// Fetch lists
const userLists = await UserList.find({
userId: me._id,
});
res(await Promise.all(userLists.map(x => pack(x))));
});

View File

@@ -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();
});