Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const _deleteOneToOneRooms = function(userId, teamMembers) {
- return function() {
- return User.findOne({ _id: userId })
- .then((userDeleted) => {
- return Promise.all(teamMembers.map((member) => {
- return User.findOne({ _id: member }).then((user) => {
- return {
- id: user._id,
- commonTeams: Utils.arrayIntersect(user.teams, userDeleted.teams).length !== 0
- };
- });
- }))
- .then((usersNoCommonTeam) => {
- return Promise.all(usersNoCommonTeam.map((user) => {
- if(user.commonTeams) {
- return Promise.resolve();
- }
- return Room.findOneAndRemove(
- {
- $and: [
- { type: 'one-to-one' },
- { owners: { $all: [user.id, userDeleted] } }
- ]
- });
- }));
- });
- })
- .then((roomsToDelete) => {
- return Promise.all(roomsToDelete.map((room) => {
- if(room) {
- return Membership.remove({ room: room._id });
- }
- return Promise.resolve();
- }));
- });
- };
- };
- someDatabaseLookups.then(_deleteOneToOneRooms(userId, teamMembers))
- const _deleteOneToOneRooms = function(userId, teamMembers) {
- return function() {
- return User.findOne({ _id: userId })
- .then((deletedUser) => {
- return _getUsersWithNoCommonTeams(deletedUser, teamMembers);
- })
- .then((usersNoCommonTeam) => {
- return _getOneToOneRooms(userId, usersNoCommonTeam);
- })
- .then(_removeRooms);
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement