Dans le sujet précédent, nous avons créé l'action SubmitOrder pour le CatalogService. La mise en œuvre de cette action n'est pas encore terminée, car nous ne savons toujours pas comment accéder aux tables de base de données. Nous l'apprendrons ensuite.
Pour implémenter l'action submitOrder, nous avons besoin des deux accès à la base de données suivants :
- Nous voulons nous assurer que le stock actuel pour le livre commandé est supérieur ou égal à la quantité commandée. Pour ce faire, nous devons sélectionner le stock actuel dans la base de données.
- S'il y a suffisamment de livres en stock et que l'ordre est donc exécuté, il faut réduire le stock actuel. Cela signifie que nous devons mettre à jour le stock dans la base de données en conséquence.
API courante
Le module cds.ql fournit une API de type SQL pour construire de telles requêtes de base de données. Les requêtes requises pour notre scénario sont présentées dans la figure suivante.

L'API est mise à disposition via les objets globaux SELECT, INSERT, UPSERT, UPDATE et DELETE.
Remarque
12const cds = require('@sap/cds');
const { SELECT, INSERT, UPSERT, UPDATE, DELETE } = cds.ql;L'API disponible via les objets CLAS répertoriés est conçue comme une API fluide. Cela signifie que les méthodes disponibles sur ces objets renvoient des objets du même type. Les propriétés disponibles - telles que la propriété .one de l'objet SELECT utilisé dans l'exemple présenté - ont également des objets du même type que leur valeur. Cela permet le chaînage, ce qui rend le codage intuitif et lisible.
Remarque
Pour identifier la table de base de données à laquelle accéder, nous utilisons la définition CSN de l'entité Pages dans l'exemple présenté. Il s'agit de l'approche recommandée.
API courante avec modèles marqués
Comme alternative aux appels de méthode classiques indiqués ci-dessus, l'API courante peut également être utilisée avec des modèles balisés. La figure suivante montre comment les requêtes créées ci-dessus à l'aide d'appels de méthode classiques peuvent être créées à l'aide de modèles marqués. Le résultat est le même dans les deux cas.

Remarque


