All files / src/controllers message.controller.js

19.35% Statements 6/31
0% Branches 0/6
0% Functions 0/2
19.35% Lines 6/31

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 904x 4x 4x   4x                                       4x                                                                                                                         4x        
const Message = require('../models/message.model');
const User = require('../models/user.model');
const Like = require('../models/like.model');
 
const getChatMessage = async (req, res) => {
  const miId = req.uid;
  const mensajesTo = req.params.from;
 
  const last30 = await Message.find({
    $or: [
      { from: miId, to: mensajesTo },
      { from: mensajesTo, to: miId },
    ],
  })
    .sort({ createdAt: 'asc' })
    .limit(100);
 
  res.json({
    ok: true,
    msg: last30,
    data: 'Get messages',
  });
};
 
const countLikes = async (req, res) => {
  const messageId = req.params.from;
  const { uid } = req;
 
  try {
    const message = await Message.findById(messageId);
    if (!message) {
      throw new Error('Invalid message');
    }
 
    const user = await User.findById(uid);
    if (!user) {
      throw new Error('Invalid user');
    }
 
    const LikeMessage = await Like.findOne({
      userId: user._id,
      messageId: message._id,
    });
    if (!LikeMessage) {
      const newLike = new Like({
        userId: user._id,
        messageId: message._id,
      });
      const likeData = await newLike.save();
      await Message.updateOne(
        { _id: message._id },
        {
          $push: { likes: likeData },
        }
      );
 
      const messageUpdated = await Message.findById(messageId);
      return res.status(200).json({
        ok: true,
        msg: 'Like successfully added',
        like: messageUpdated,
      });
    } else {
      await Like.deleteOne({ _id: LikeMessage._id });
 
      await Message.updateOne(
        { _id: LikeMessage.messageId },
        {
          $pull: {
            likes: LikeMessage,
          },
        }
      );
      const messageUpdated = await Message.findById(messageId);
      return res.status(200).json({
        ok: true,
        msg: 'Like successfully removed',
        like: messageUpdated,
      });
    }
  } catch (err) {
    console.log(err);
  }
};
 
module.exports = {
  getChatMessage,
  countLikes,
};