Nous avons une base de données SQL Server existante et nous utilisons C #. Disons que notre client mobile envoie un graphql au serveur. Comment puis-je convertir ce code SQL afin que mon client obtienne les données qu'il attend?
GraphQL et SQL, tout en ressemblant, résolvent des problèmes différents. SQL est utilisé pour interroger directement une base de données. GraphQL est utilisé pour interroger des sources de données de tout type, telles que des bases de données (via SQL ou des bibliothèques client), des API et des fichiers statiques. GraphQL peut être comparé aux points de terminaison REST ou aux API ad-hoc.
Une solution serait de créer vous-même l’implémentation GraphQL. GraphQL.org contient de nombreuses informations utiles sur la mise en oeuvre et l’utilisation d’un serveur GraphQL. Si cela vous demande trop de travail, vous pourriez tirer parti de ce projet: GraphQL .NET
Pensez également à rechercher d'autres implémentations GraphQL, telles que ApolloStack . Si vous pouvez séparer votre serveur GraphQL de votre serveur .NET, vous pouvez utiliser ApolloStack ou un autre serveur Javascript GraphQL pour héberger vos données.
Je vous suggère d’envisager de mettre en œuvre une version C # du référentiel Join Monster, écrite par
Andy Carlson https://github.com/stems/join-monster
Il tente de convertir une requête GraphQL fournie par le client en la requête SQL la plus efficace possible. Il ne prend actuellement pas en charge les relations plusieurs à plusieurs ni les types d'union (associations polymorphes), mais ces objectifs font partie de la feuille de route du référentiel.
Non, malheureusement, vous ne pouvez pas convertir GraphQL en SQL.
Si votre client vous envoie une requête dans GraphQL, vous n'avez pas d'autre choix que de créer votre serveur GraphQL et d'interroger la base de données à partir de là.
GraphQL n'est pas SQL. Alors que SQL est un langage de requête de base de données, GraphQL est un langage de requête allant du client au middleware.
Vous pouvez aussi regarder une implémentation telle que Postgraphile
En gros, il inspecte chaque requête GraphQL et combine les résolveurs des champs imbriqués en une seule jointure SQL, qui est ensuite résolue de manière récursive.