# Serveur de traitement des données
Ce serveur s'occupe de fournir une API web pour pourvoir ajouter des avis sur la borne, réxupérer des avis, calculer et fournir les statistiques sur ces avis  

# Installation (Si vous voulez le lancer hors du container docker)
* Pour faire fonctinoner le serveur sur vos machines il y a 3 choses a faire
1. Installer node js : https://nodejs.org/en/download/
2. Ouvrir un terminal et aller dans ce dossier (code/server) et tapper `npm install` pour installer les pacakges nécessaires
3. copier le fichier `.env_template` et le nommer `.env` et remplir les variables (cela est fait pour le pas mettre les mots de passes sur le gitlab, faites attention de ne jamais commit le fichier .env !!)
4. pour lancer le serveur faire `node index.js`

# Utilisation
## Avis laissés sur la borne (hors réseaux sociaux)
### Routes GET :
- `/borne/get_last_reviews?limit=LIM` : renvoie les LIM derniers avis sur la borne
- `/borne/get_review?id=ID` : renvoie les infos sur l'avis d'in ID
- `/borne/get_criteres` : renvoie les criteres de notations valide pour les notes autres
- `/borne/notes_autres?critere=CRIT&limit=LIM` : renvoie les LIM dernières notes sur le critère CRIT
- `/borne/notes_autres?id=ID&limit=LIM` : renvoie toutes les notes spécifiques liées à l'avis ID
- `get_stats?interval=INTERVAL&limit=LIM`: interval est "jour", "mois", "annee", "semaine", l'interval de calcul de données demandé, LIM est le nombre des stats à récupérer

### Routes POST
- `/add_review` : Ajoute une review et un auteur, paramètres POST :
    * [OBLIGATOIRE] `note` : note principale de la review entre 0 et 10 compris
    * [OBLIGATOIRE] `source` : nom de la source de l'avis, doit être `borne` ou `website` pour resp la borne et le site
    * `auteur_age` : age de l'auteur
    * `auteur_sexe` : sexe de l'auteur (valeurs valide 'f', 'h', 'a')
    * `commentaire` : Commentaire laissé avec l'avis
    * `notes autres` : sous la forme 
        ```json
        {
            "critere1": 8,
            "critere2": 2,
            "critere3": 0
        }
        ```
