Skip to content
Snippets Groups Projects
Commit 46780ba6 authored by Bastien's avatar Bastien
Browse files

rechercher personne par son nom

parent 23a8bd20
No related branches found
No related tags found
No related merge requests found
......@@ -20,4 +20,15 @@ exports.getPersonMovies = async (req, res, next) => {
} catch (error) {
res.status(500).json({ error : error.toString()});
}
};
exports.searchPerson = async (req, res, next) => {
let searchedName = req.query.name;
try {
let result = await personServices.searchPerson(searchedName);
res.status(200).json(result);
} catch (error) {
res.status(500).json({ error : error.toString()});
}
};
\ No newline at end of file
......@@ -34,13 +34,34 @@ exports.getPersonMovies = (personId) => {
return new Promise((resolve, reject) => {
db.query('SELECT * FROM role r JOIN film f ON r.tconst=f.tconst WHERE r.nconst = ?',
[personId], function (error, results, fields) {
[personId], function (error, results, fields) {
if (error) {
return reject(error);
} else {
return resolve(results);
}
})
})
};
if (error) {
return reject(error);
} else {
return resolve(results);
}
})
/**
* Recherche des personnes dans la base de données en fonction du nom ou du prénom.
*
* @param {string} searchedName - Le nom ou le prénom à rechercher.
* @returns {Promise<Array<Object>>} Une promesse qui se résout avec un tableau d'objets contenant les informations sur les personnes trouvées.
* Chaque objet contient le nom complet (concaténation du prénom et du nom) et l'identifiant unique de la personne (nconst).
* La promesse se rejette avec une erreur si l'opération échoue.
*/
exports.searchPerson = (searchedName) => {
return new Promise((resolve, reject) => {
db.query('SELECT CONCAT(prenom," ",nom) as nom, nconst FROM personne WHERE CONCAT(prenom," ",nom) LIKE CONCAT("%",?,"%") OR CONCAT(nom," ",prenom) LIKE CONCAT("%",?,"%") LIMIT 20',
[searchedName, searchedName], function (error, results, fields) {
if (error) {
return reject(error);
} else {
return resolve(results);
}
})
})
};
\ No newline at end of file
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ const controller = require('../controllers/personController');
router.get('/:id(nm\\d+)',controller.getPersonInformations);
router.get('/movies/:id(nm\\d+)',controller.getPersonMovies);
router.get('/search',controller.searchPerson);
......
......@@ -30,3 +30,19 @@ exports.getPersonMovies = async (personId) => {
}
}
/**
* Recherche des personnes dans la base de données en fonction du nom ou du prénom via le module personDb.
*
* @param {string} searchedName - Le nom ou le prénom à rechercher.
* @returns {Promise<Array<Object>>} Une promesse qui se résout avec un tableau d'objets contenant les informations sur les personnes trouvées.
* Chaque objet contient le nom complet (concaténation du prénom et du nom) et l'identifiant unique de la personne (nconst).
* La promesse se rejette avec une erreur si l'opération échoue.
*/
exports.searchPerson = async (searchedName) => {
try {
return await personDb.searchPerson(searchedName);
} catch (error) {
throw new Error(error);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment