feat: support resubmit.

TODO: basic implementation. should add multi-path record in future.

feat: add deleteMessahesSince
feat: saveMessage will do createOrSave
feat: reorginazed submission
This commit is contained in:
Wentao Lyu 2023-03-13 05:26:17 +08:00
parent b9975ac283
commit bdfc895800
10 changed files with 189 additions and 67 deletions

View file

@ -42,21 +42,32 @@ const messageSchema = mongoose.Schema({
const Message = mongoose.models.Message || mongoose.model('Message', messageSchema);
module.exports = {
saveMessage: async ({ id, conversationId, parentMessageId, sender, text }) => {
saveMessage: async ({ id, conversationId, parentMessageId, sender, text, isCreatedByUser=false }) => {
try {
await Message.create({
id,
await Message.findOneAndUpdate({ id }, {
conversationId,
parentMessageId,
sender,
text
});
return { id, conversationId, parentMessageId, sender, text };
text,
isCreatedByUser
}, { upsert: true, new: true });
return { id, conversationId, parentMessageId, sender, text, isCreatedByUser };
} catch (error) {
console.error(error);
return { message: 'Error saving message' };
}
},
deleteMessagesSince: async ({ id, conversationId }) => {
try {
message = await Message.findOne({ id }).exec()
if (message)
return await Message.find({ conversationId }).deleteMany({ createdAt: { $gt: message.createdAt } }).exec();
} catch (error) {
console.error(error);
return { message: 'Error deleting messages' };
}
},
getMessages: async (filter) => {
try {
return await Message.find(filter).sort({createdAt: 1}).exec()