Como a maioria das tarefas padrão e casos de utilização são cobertos por provedores de serviços genéricos, a necessidade de adicionar código de implementação de serviço é bastante reduzida e minimizada.
Os casos restantes se reduzem a uma lógica personalizada real, específica ao seu domínio e aplicativo, como validações programáticas específicas de domínio.
Como exemplo, vamos programar uma validação que garanta que a data de nascimento passada é anterior à data de morte passada ao criar um novo autor através do AdminService.
A maneira mais fácil de adicionar implementações de serviço personalizado é simplesmente colocar um arquivo .js igualmente chamado ao lado do arquivo .cds contendo a respectiva definição de serviço. Ou seja, no nosso caso, colocamos um arquivo chamado admin-service.js na pasta srv do nosso projeto, pois essa pasta também contém o arquivo admin-service.cds, que é usado para definir o AdminService (veja a figura a seguir).

Nota
Existem diferentes formas de implementar a lógica personalizada necessária no arquivo .js. A maneira mais comum é usar uma subclasse de cds.ApplicationService para se beneficiar de implementações genéricas prontas para uso. Isso ocorre porque a classe cds.ApplicationService é a implementação padrão do provedor de serviços, que adiciona os provedores genéricos já discutidos a uma definição de serviço.
Para criar uma subclasse de cds.ApplicationService, primeiro atribuímos o módulo @sap/cds à constante cds em nosso código (linha 1). O módulo @sap/cds é o objeto de fachada cds que fornece acesso a todas as APIs CAP Node.js.
Em seguida, criamos uma subclasse de cds.ApplicationService nas linhas 4 a 6, na qual mais tarde implementaremos nossa lógica personalizada. O nome da subclasse é arbitrário. Chamamos isso aqui como nossa interface de serviço, ou seja, AdminService.
Na linha 9, disponibilizamos a classe AdminService para importação em outros módulos. Esta é uma prática comum no Node.js para estruturar o código.
Nota
Se você iniciar agora a aplicação inserindo cds watch no terminal, o arquivo de implementação de serviço adicionado é exibido no log por meio de uma saída semelhante à seguinte:
1[cds] - serving AdminService { path: '/admin', impl: 'srv/admin-service.js' }


