mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-18 17:30:16 +01:00
saves all conversations with messages
This commit is contained in:
parent
232a823b9b
commit
511c8c9599
3 changed files with 38 additions and 1 deletions
34
models/Conversation.js
Normal file
34
models/Conversation.js
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
const mongoose = require('mongoose');
|
||||||
|
const { Message } = require('./Message');
|
||||||
|
|
||||||
|
const convoSchema = mongoose.Schema({
|
||||||
|
conversationId: {
|
||||||
|
type: String,
|
||||||
|
unique: true,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
parentMessageId: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
messages: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Message' }],
|
||||||
|
created: {
|
||||||
|
type: Date,
|
||||||
|
default: Date.now
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const Conversation =
|
||||||
|
mongoose.models.Conversation || mongoose.model('Conversation', convoSchema);
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
saveConversation: async ({ conversationId, parentMessageId }) => {
|
||||||
|
const messages = await Message.find({ conversationId });
|
||||||
|
|
||||||
|
await Conversation.findOneAndUpdate(
|
||||||
|
{ conversationId },
|
||||||
|
{ $set: { parentMessageId, messages } },
|
||||||
|
{ new: true, upsert: true }
|
||||||
|
).exec();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -40,5 +40,6 @@ module.exports = {
|
||||||
sender,
|
sender,
|
||||||
text
|
text
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
|
Message,
|
||||||
}
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ const express = require('express');
|
||||||
const { ask } = require('../app/chatgpt');
|
const { ask } = require('../app/chatgpt');
|
||||||
const dbConnect = require('../models/dbConnect');
|
const dbConnect = require('../models/dbConnect');
|
||||||
const { saveMessage } = require('../models/Message');
|
const { saveMessage } = require('../models/Message');
|
||||||
|
const { saveConversation } = require('../models/Conversation');
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
|
|
@ -55,6 +56,7 @@ app.post('/ask', async (req, res) => {
|
||||||
|
|
||||||
gptResponse.sender = 'GPT';
|
gptResponse.sender = 'GPT';
|
||||||
await saveMessage(gptResponse);
|
await saveMessage(gptResponse);
|
||||||
|
await saveConversation(gptResponse);
|
||||||
|
|
||||||
res.write(`event: message\ndata: ${JSON.stringify(gptResponse)}\n\n`);
|
res.write(`event: message\ndata: ${JSON.stringify(gptResponse)}\n\n`);
|
||||||
res.end();
|
res.end();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue