EvalueTonSavoir/server/models/utils.js
C. Fuhrman 357fd1a271 Renommer dossier à nom existant donne erreur
Le middleware des erreurs ne fonctionnait pas correctement, parce que les routeurs ne passaient pas à next
J'ai ajouté asyncHandler pour passer les erreurs dans les routeurs
Supprimer messages de console
Fix tests
2025-01-26 21:50:57 -05:00

35 lines
1,011 B
JavaScript

// utils.js
async function generateUniqueTitle(baseTitle, existsCallback) {
// console.log(`generateUniqueTitle(${baseTitle})`);
let newTitle = baseTitle;
let counter = 1;
const titleRegex = /(.*?)(\((\d+)\))?$/;
const match = baseTitle.match(titleRegex);
if (match) {
baseTitle = match[1].trim();
counter = match[3] ? parseInt(match[3], 10) + 1 : 1;
}
// If the base title does not end with a parentheses expression, start with "(1)"
if (!match[2]) {
newTitle = `${baseTitle} (${counter})`;
} else {
// else increment the counter in the parentheses expression as a first try
newTitle = `${baseTitle} (${counter})`;
}
// console.log(`first check of newTitle: ${newTitle}`);
while (await existsCallback(newTitle)) {
counter++;
newTitle = `${baseTitle} (${counter})`;
// console.log(`trying newTitle: ${newTitle}`);
}
return newTitle;
}
module.exports = {
generateUniqueTitle
};