Spaces:
Runtime error
Runtime error
const Message = require('./schema/messageSchema'); | |
module.exports = { | |
Message, | |
async saveMessage({ | |
messageId, | |
newMessageId, | |
conversationId, | |
parentMessageId, | |
sender, | |
text, | |
isCreatedByUser = false, | |
error, | |
unfinished, | |
cancelled, | |
tokenCount = null, | |
plugin = null, | |
model = null, | |
}) { | |
try { | |
// may also need to update the conversation here | |
await Message.findOneAndUpdate( | |
{ messageId }, | |
{ | |
messageId: newMessageId || messageId, | |
conversationId, | |
parentMessageId, | |
sender, | |
text, | |
isCreatedByUser, | |
error, | |
unfinished, | |
cancelled, | |
tokenCount, | |
plugin, | |
model, | |
}, | |
{ upsert: true, new: true }, | |
); | |
return { | |
messageId, | |
conversationId, | |
parentMessageId, | |
sender, | |
text, | |
isCreatedByUser, | |
tokenCount, | |
}; | |
} catch (err) { | |
console.error(`Error saving message: ${err}`); | |
throw new Error('Failed to save message.'); | |
} | |
}, | |
async updateMessage(message) { | |
try { | |
const { messageId, ...update } = message; | |
const updatedMessage = await Message.findOneAndUpdate({ messageId }, update, { new: true }); | |
if (!updatedMessage) { | |
throw new Error('Message not found.'); | |
} | |
return { | |
messageId: updatedMessage.messageId, | |
conversationId: updatedMessage.conversationId, | |
parentMessageId: updatedMessage.parentMessageId, | |
sender: updatedMessage.sender, | |
text: updatedMessage.text, | |
isCreatedByUser: updatedMessage.isCreatedByUser, | |
tokenCount: updatedMessage.tokenCount, | |
}; | |
} catch (err) { | |
console.error(`Error updating message: ${err}`); | |
throw new Error('Failed to update message.'); | |
} | |
}, | |
async deleteMessagesSince({ messageId, conversationId }) { | |
try { | |
const message = await Message.findOne({ messageId }).lean(); | |
if (message) { | |
return await Message.find({ conversationId }).deleteMany({ | |
createdAt: { $gt: message.createdAt }, | |
}); | |
} | |
} catch (err) { | |
console.error(`Error deleting messages: ${err}`); | |
throw new Error('Failed to delete messages.'); | |
} | |
}, | |
async getMessages(filter) { | |
try { | |
return await Message.find(filter).sort({ createdAt: 1 }).lean(); | |
} catch (err) { | |
console.error(`Error getting messages: ${err}`); | |
throw new Error('Failed to get messages.'); | |
} | |
}, | |
async deleteMessages(filter) { | |
try { | |
return await Message.deleteMany(filter); | |
} catch (err) { | |
console.error(`Error deleting messages: ${err}`); | |
throw new Error('Failed to delete messages.'); | |
} | |
}, | |
}; | |