Skip to content
Snippets Groups Projects
Commit d0b52998 authored by Pascalou's avatar Pascalou
Browse files

Merge branch 'dev-front' of https://forge.univ-lyon1.fr/p2306959/projet-tutore-s5 into dev-front

parents 1ffcfad2 cf4d3e19
No related branches found
No related tags found
No related merge requests found
...@@ -20,4 +20,15 @@ exports.getPersonMovies = async (req, res, next) => { ...@@ -20,4 +20,15 @@ exports.getPersonMovies = async (req, res, next) => {
} catch (error) { } catch (error) {
res.status(500).json({ error : error.toString()}); 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) => { ...@@ -34,13 +34,34 @@ exports.getPersonMovies = (personId) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
db.query('SELECT * FROM role r JOIN film f ON r.tconst=f.tconst WHERE r.nconst = ?', 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); * Recherche des personnes dans la base de données en fonction du nom ou du prénom.
} else { *
return resolve(results); * @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'); ...@@ -4,6 +4,7 @@ const controller = require('../controllers/personController');
router.get('/:id(nm\\d+)',controller.getPersonInformations); router.get('/:id(nm\\d+)',controller.getPersonInformations);
router.get('/movies/:id(nm\\d+)',controller.getPersonMovies); router.get('/movies/:id(nm\\d+)',controller.getPersonMovies);
router.get('/search',controller.searchPerson);
......
...@@ -30,3 +30,19 @@ exports.getPersonMovies = async (personId) => { ...@@ -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