Na lição anterior, criamos a ação submitOrder para o CatalogService. A implementação desta ação ainda não está completa, uma vez que ainda falta o conhecimento de como acessar tabelas de banco de dados. Vamos aprender isso a seguir.
Para implementar a ação submitOrder, precisamos dos dois acessos ao banco de dados a seguir:
- Queremos garantir que o estoque atual para o livro pedido é superior ou igual à quantidade pedida. Para isso, é necessário selecionar o estoque atual do banco de dados.
- Se houver livros suficientes em estoque e a ordem for executada, reduzimos o estoque atual. Isso significa que temos que atualizar o estoque no banco de dados adequadamente.
API fluente
O módulo cds.ql fornece uma API do tipo SQL para a construção de tais consultas de banco de dados. As consultas necessárias para nosso cenário são mostradas na figura a seguir.

A API é disponibilizada por meio dos objetos globais SELECT, INSERT, UPSERT, UPDATE e DELETE.
Nota
12const cds = require('@sap/cds');
const { SELECT, INSERT, UPSERT, UPDATE, DELETE } = cds.ql;A API disponível por meio dos objetos CRUD listados é concebida como uma API fluente. Isso significa que os métodos disponíveis nesses objetos retornam objetos do mesmo tipo. As propriedades disponíveis - como a propriedade .one do objeto SELECT usado no exemplo mostrado - também têm objetos do mesmo tipo que seu valor. Isso permite o encadeamento, o que torna a codificação intuitiva e legível.
Nota
Para identificar a tabela de banco de dados a ser acessada, usamos a definição CSN da entidade Livros no exemplo mostrado. Esta é a abordagem recomendada.
API fluente com modelos marcados
Como uma alternativa às chamadas de método clássicas mostradas acima, a API fluente também pode ser usada com modelos marcados. A figura a seguir mostra como as consultas construídas acima usando chamadas de método clássicas podem ser criadas usando modelos marcados. O resultado é o mesmo em ambos os casos.

Nota


