ApplETS / applets-java-api

Fetch and provide JSON for web resources related to ÉTS
https://clubapplets.ca/
Apache License 2.0
7 stars 2 forks source link

Produire les requêtes DB du DAO #2

Closed ttauveron closed 8 years ago

ttauveron commented 8 years ago

Description du issue

Le DAO est un patron de conception qui permet de découpler l'interaction avec la DB du programme principal.

Actuellement, on a, respectivement pour les Sources et les Nouvelles, deux méthodes seulement : find(key) et findAll().

Il faut donc remplir le contenu de ces méthodes, il y a un exemple ici : https://github.com/ApplETS/applets-java-api/blob/master/src/main/java/applets/etsmtl/ca/news/db/SourceDAO.java#L14

Pour le findAll() des Nouvelles, il faudrait faire une requête SQL pour ne récupérer que les 10 dernières par exemple, pas toutes sinon ça peut faire beaucoup passé quelques temps.

Configuration

Pour setuper tout ça, il va falloir configurer une DB postgresql en local, voici la version qu'on utilise : postgresql-9.4.

Pour interagir avec la DB, on utilise le client pgadmin3.

Dans le code Java, il faudra remplir les identifiants de connexion à la DB ici : https://github.com/ApplETS/applets-java-api/blob/master/src/main/java/applets/etsmtl/ca/news/db/ConnectionSingleton.java

Finalement, voici un backup de la DB qu'on utilise actuellement (à restaurer dans pgadmin3): https://drive.google.com/open?id=0B0MZv7btHQ1IeVZ1eGFXd3F5ZGM

Tu peux ajouter des données de test en DB locale pour vérifier que ça fonctionne bien (genre des sources et des nouvelles)

Attention à pas commiter le fichier ConnectionSingleton.java qui contient les credentials DB (jusqu'à ce qu'on mette en place des variables d'environnement aka pas de setup des creds dans le code)

N'hésite pas à contacter @powereborn ou @gnut3ll4 si tu as besoin d'aide/informations/anything !

valentin-debris commented 8 years ago

Juste une proposition au passage (je sais pas si ça a été changé depuis). On utilisait avant des requêtes SQL de base, sans protection. L'idéal serait d'utiliser des requêtes SQL préparées pour éviter les injections entre autre. Vous pouvez regarder mes fichiers DAO d'AMC pour des exemples (https://github.com/ApplETS/applets-java-api/blob/amc/src/main/java/applets/etsmtl/ca/amc/db/MusiqueDAO.java)

ttauveron commented 8 years ago

Oui absolument !! :+1: