wip
This commit is contained in:
25
src/server/api/endpoints/users/lists/create.ts
Normal file
25
src/server/api/endpoints/users/lists/create.ts
Normal 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));
|
||||
});
|
13
src/server/api/endpoints/users/lists/list.ts
Normal file
13
src/server/api/endpoints/users/lists/list.ts
Normal 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))));
|
||||
});
|
48
src/server/api/endpoints/users/lists/push.ts
Normal file
48
src/server/api/endpoints/users/lists/push.ts
Normal 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();
|
||||
});
|
Reference in New Issue
Block a user