Indipendenza dal CMS
Il server GraphQL sottostante su cui si basa Gato GraphQL è indipendente dal CMS, il che gli consente di funzionare con qualsiasi CMS o framework PHP (non solo WordPress, ma anche Laravel e Symfony).
Per raggiungere questa indipendenza dal CMS, tutte le funzionalità che devono interagire con il CMS sono suddivise in 2 pacchetti distinti:
- Un pacchetto indipendente dal CMS, che contiene tutto il codice di business e i contratti per interagire con il CMS che lo implementa, qualunque esso sia (ad esempio: posts)
- Un pacchetto specifico per il CMS, che contiene l'implementazione dei contratti per un determinato CMS (ad esempio: posts-wp, che implementa i contratti per WordPress)
In questo modo, la maggior parte del codice (circa il 90%) risiede nel pacchetto indipendente dal CMS. Per portare l'API verso un altro CMS (ad esempio: da WordPress a Laravel), deve essere implementato solo il pacchetto specifico per il CMS (che rappresenta circa il 10% del codice totale).
Ridurre al minimo la quantità di codice da reimplementare ed evitare la duplicazione di codice tra i pacchetti sono i principali criteri che determinano il modo in cui il codice viene ripartito in pacchetti.