# README MyTinySocra
## Software Craftmanship
This is the practical asked for MTI students in EPITA in 4th grade.
It consists in developping a REST API
## Authors
- Louis SANTUCCI
- - Leo TAVERNIER
- Thomas TOURETTE
- Antoine DU FOU
## Les Pre-requis
- Docker
- Laravel 8.*
## Pour lancer le projet / les tests
- Pour le projet :
- Dans ./mytinysocra :
- docker compose build
- docker compose up
- Pour les tests :
- Dans ./mytinysocra :
- php artisan test
## L'Architecture
- Nous avons utilise une architecture "Modele View Controleur" (design-pattern d'architecture logicielle).
- Le modele contient les donnees a afficher et permet le mappage des champs de la base de donnee en objets.
- Le controlleur contient toute la logique concernant les actions effectue par l'utilisateur.
Il permet nottament de mettre a jour les donnees des modeles et de la base de donnee via des requetes (GET, PUT , PATCH, UPDATE)
- Le reste de l'architecture est cree par Laravel a la creation du projet
## Endpoints API
- GET /api/mission : Permet de lister toutes les missions de la base de donnee trie par la date de creation.
- GET /api/mission/find?id=xxx : Permet de trouver une mission en renseignant son ID.
- GET /api/mission/search?word, word2, ... : Permet de lister les missions par ordre decroissant de pertinence grace aux mots ayant servi a la recherche
- POST /api/mission : Permet de cree une mission.
- Mettre dans le BODY :
{
"duration": "10 MONTHS",
"location": "Stokestown",
"price": 999999,
"telecommuting": "30",
"start": "1990-09-29 23:22:38",
"context": "Repellendus qui est dicta asperiores dolorum deleniti in. Et autem itaque voluptatum adipisci.",
"mission": "Tempora impedit totam et ducimus impedit sit. Commodi sunt est eos ea et quam vel. Voluptate nihil magnam veritatis labore. Sapiente asperiores est voluptas ut provident error.",
"post": "Lawyer"
}
- PUT /api/mission : Permet de mettre a jour les champs d'une mission
- PATCH /api/mission : Permet de mettre a jour les champs d'une mission
## Description pipeline CI / CD
- La pipeline permet de build le projet puis de lancer la test-suite.
- Un mail est egalement envoyer lorsque le build ne fonctionne ou que les tests ne fonctionne pas