import Message from "../models/Message.js"; import User from "../models/User.js"; function getMessageById(id) { return Message.findById(id).populate('authorId').populate('roomId'); } function listMessages(opts) { const limit = opts.limit || 50; const offset = opts.offset || 0; const filters = opts.filters || {}; const query = {}; if (filters.authorId) { query.authorId = filters.authorId; } if (filters.roomId) { query.roomId = filters.roomId; } return Message.find(query).skip(offset).limit(limit).sort({ createdAt: -1 }); } function searchMessages(opts) { const q = opts.q || ''; const filters = opts.filters || {}; const query = { text: { $regex: q, $options: 'i' } }; if (filters.roomId) { query.roomId = filters.roomId; } return Message.find(query).sort({ createdAt: -1 }); } async function createMessage(data) { const author = await User.findById(data.authorId); if (!author) { return { error: 'author_not_found' }; } const message = new Message(data); return message.save(); } function updateMessage(id, updates) { return Message.findByIdAndUpdate(id, updates, { new: true }); } function deleteMessage(id) { return Message.findByIdAndDelete(id); } export { getMessageById, listMessages, searchMessages, createMessage, updateMessage, deleteMessage };