diff --git a/api/models/Conversation.js b/api/models/Conversation.js index eec4efceda..732005b968 100644 --- a/api/models/Conversation.js +++ b/api/models/Conversation.js @@ -149,6 +149,7 @@ module.exports = { }, deleteConvos: async (user, filter) => { let deleteCount = await Conversation.deleteMany({ ...filter, user }).exec(); + console.log('deleteCount', deleteCount); deleteCount.messages = await deleteMessages(filter); return deleteCount; } diff --git a/api/models/plugins/mongoMeili.js b/api/models/plugins/mongoMeili.js index c2875b9dfa..cda49b8768 100644 --- a/api/models/plugins/mongoMeili.js +++ b/api/models/plugins/mongoMeili.js @@ -1,3 +1,4 @@ +const mongoose = require('mongoose'); const { MeiliSearch } = require('meilisearch'); const { cleanUpPrimaryKeyValue } = require('../../lib/utils/misc'); const _ = require('lodash'); @@ -192,6 +193,18 @@ module.exports = function mongoMeili(schema, options) { schema.post('remove', function (doc) { doc.postRemoveHook(); }); + schema.post('deleteMany', function (doc) { + // console.log('deleteMany hook', doc); + if (Object.prototype.hasOwnProperty.call(schema.obj, 'messages')) { + console.log('Syncing convos...'); + mongoose.model('Conversation').syncWithMeili(); + } + + if (Object.prototype.hasOwnProperty.call(schema.obj, 'messageId')) { + console.log('Syncing messages...'); + mongoose.model('Message').syncWithMeili(); + } + }); schema.post('findOneAndUpdate', function (doc) { doc.postSaveHook(); }); diff --git a/api/server/routes/convos.js b/api/server/routes/convos.js index 6f4b5cd736..7b2f9c72f9 100644 --- a/api/server/routes/convos.js +++ b/api/server/routes/convos.js @@ -19,25 +19,22 @@ router.get('/:conversationId', async (req, res) => { router.post('/gen_title', async (req, res) => { const { conversationId } = req.body.arg; - const convo = await getConvo(req?.session?.user?.username, conversationId) - const firstMessage = (await getMessages({ conversationId }))[0] - const secondMessage = (await getMessages({ conversationId }))[1] + const convo = await getConvo(req?.session?.user?.username, conversationId); + const firstMessage = (await getMessages({ conversationId }))[0]; + const secondMessage = (await getMessages({ conversationId }))[1]; const title = convo.jailbreakConversationId ? await getConvoTitle(req?.session?.user?.username, conversationId) : await titleConvo({ - model: convo?.model, - message: firstMessage?.text, - response: JSON.stringify(secondMessage?.text || '') - }); + model: convo?.model, + message: firstMessage?.text, + response: JSON.stringify(secondMessage?.text || '') + }); - await saveConvo( - req?.session?.user?.username, - { - conversationId, - title - } - ) + await saveConvo(req?.session?.user?.username, { + conversationId, + title + }); res.status(200).send(title); }); diff --git a/api/server/routes/search.js b/api/server/routes/search.js index a01901e9d0..60ed3472ea 100644 --- a/api/server/routes/search.js +++ b/api/server/routes/search.js @@ -66,12 +66,14 @@ router.get('/', async function (req, res) { } } result.messages = activeMessages; - result.cache.messages = activeMessages; - cache.set(key, result.cache); - delete result.cache; + if (result.cache) { + result.cache.messages = activeMessages; + cache.set(key, result.cache); + delete result.cache; + } delete result.convoMap; // for debugging - // console.log(result, messages.length); + console.log(result, messages.length); res.status(200).send(result); } catch (error) { console.log(error);