mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-22 08:12:00 +02:00

* ci(backend-review.yml): add linter step to the backend review workflow * chore(backend-review.yml): remove prettier from lint-action configuration * chore: apply new linting workflow * chore(lint-staged.config.js): reorder lint-staged tasks for JavaScript and TypeScript files * chore(eslint): update ignorePatterns in .eslintrc.js chore(lint-action): remove prettier option in backend-review.yml chore(package.json): add lint and lint:fix scripts * chore(lint-staged.config.js): remove prettier --write command for js, jsx, ts, tsx files * chore(titleConvo.js): remove unnecessary console.log statement chore(titleConvo.js): add missing comma in options object * chore: apply linting to all files * chore(lint-staged.config.js): update lint-staged configuration to include prettier formatting
59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
const mergeSort = require('./mergeSort');
|
|
const { cleanUpPrimaryKeyValue } = require('./misc');
|
|
|
|
function reduceMessages(hits) {
|
|
const counts = {};
|
|
|
|
for (const hit of hits) {
|
|
if (!counts[hit.conversationId]) {
|
|
counts[hit.conversationId] = 1;
|
|
} else {
|
|
counts[hit.conversationId]++;
|
|
}
|
|
}
|
|
|
|
const result = [];
|
|
|
|
for (const [conversationId, count] of Object.entries(counts)) {
|
|
result.push({
|
|
conversationId,
|
|
count,
|
|
});
|
|
}
|
|
|
|
return mergeSort(result, (a, b) => b.count - a.count);
|
|
}
|
|
|
|
function reduceHits(hits, titles = []) {
|
|
const counts = {};
|
|
const titleMap = {};
|
|
const convos = [...hits, ...titles];
|
|
|
|
for (const convo of convos) {
|
|
const currentId = cleanUpPrimaryKeyValue(convo.conversationId);
|
|
if (!counts[currentId]) {
|
|
counts[currentId] = 1;
|
|
} else {
|
|
counts[currentId]++;
|
|
}
|
|
|
|
if (convo.title) {
|
|
// titleMap[currentId] = convo._formatted.title;
|
|
titleMap[currentId] = convo.title;
|
|
}
|
|
}
|
|
|
|
const result = [];
|
|
|
|
for (const [conversationId, count] of Object.entries(counts)) {
|
|
result.push({
|
|
conversationId,
|
|
count,
|
|
title: titleMap[conversationId] ? titleMap[conversationId] : null,
|
|
});
|
|
}
|
|
|
|
return mergeSort(result, (a, b) => b.count - a.count);
|
|
}
|
|
|
|
module.exports = { reduceMessages, reduceHits };
|