Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. const _deleteOneToOneRooms = function(userId, teamMembers) {
  2. return function() {
  3. return User.findOne({ _id: userId })
  4. .then((userDeleted) => {
  5. return Promise.all(teamMembers.map((member) => {
  6. return User.findOne({ _id: member }).then((user) => {
  7. return {
  8. id: user._id,
  9. commonTeams: Utils.arrayIntersect(user.teams, userDeleted.teams).length !== 0
  10. };
  11. });
  12. }))
  13. .then((usersNoCommonTeam) => {
  14. return Promise.all(usersNoCommonTeam.map((user) => {
  15. if(user.commonTeams) {
  16. return Promise.resolve();
  17. }
  18. return Room.findOneAndRemove(
  19. {
  20. $and: [
  21. { type: 'one-to-one' },
  22. { owners: { $all: [user.id, userDeleted] } }
  23. ]
  24. });
  25. }));
  26. });
  27. })
  28. .then((roomsToDelete) => {
  29. return Promise.all(roomsToDelete.map((room) => {
  30. if(room) {
  31. return Membership.remove({ room: room._id });
  32. }
  33. return Promise.resolve();
  34. }));
  35. });
  36. };
  37. };
  38.  
  39. someDatabaseLookups.then(_deleteOneToOneRooms(userId, teamMembers))
  40.  
  41. const _deleteOneToOneRooms = function(userId, teamMembers) {
  42. return function() {
  43. return User.findOne({ _id: userId })
  44. .then((deletedUser) => {
  45. return _getUsersWithNoCommonTeams(deletedUser, teamMembers);
  46. })
  47. .then((usersNoCommonTeam) => {
  48. return _getOneToOneRooms(userId, usersNoCommonTeam);
  49. })
  50. .then(_removeRooms);
  51. };
  52. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement