Indépendance vis-à-vis du CMS
Le serveur GraphQL sous-jacent sur lequel repose Gato GraphQL est indépendant du CMS, ce qui lui permet de fonctionner avec n'importe quel CMS ou framework PHP (pas seulement WordPress, mais aussi Laravel et Symfony).
Pour atteindre cette indépendance vis-à-vis du CMS, toutes les fonctionnalités qui doivent interagir avec le CMS sont divisées en 2 paquets distincts :
- Un paquet indépendant du CMS, contenant l'ensemble du code métier et des contrats pour interagir avec le CMS qui l'implémente, quel qu'il soit (par exemple : posts)
- Un paquet spécifique au CMS, contenant l'implémentation des contrats pour un CMS donné (par exemple : posts-wp, qui implémente les contrats pour WordPress)
Ainsi, la majeure partie du code (environ 90 %) réside dans le paquet indépendant du CMS. Pour porter l'API vers un autre CMS (par exemple : de WordPress vers Laravel), seul le paquet spécifique au CMS doit être implémenté (représentant environ 10 % du code total).
Minimiser la quantité de code à réimplémenter et éviter la duplication de code entre les paquets sont les principaux critères qui déterminent la façon dont le code est réparti en paquets.