Comme la plupart des tâches et des cas d'utilisation standard sont couverts par des fournisseurs de services génériques, la nécessité d'ajouter du code d'implémentation de service est considérablement réduite et réduite.
Les cas restants se réduisent à une logique personnalisée réelle, spécifique à votre domaine et à votre application, comme les validations programmatiques spécifiques au domaine.
À titre d'exemple, programmons une validation qui garantit que la date de naissance passée est antérieure à la date de décès passée lors de la création d'un nouvel auteur via AdminService.
Le moyen le plus simple d'ajouter des implémentations de service personnalisées est de placer un fichier .js tout aussi nommé à côté du fichier .cds contenant la définition de service correspondante. C'est-à-dire que dans notre cas, nous plaçons un fichier nommé admin-service.js dans le dossier srv de notre projet, car ce dossier contient également le fichier admin-service.cds, qui est utilisé pour définir le AdminService (voir la figure suivante).

Remarque
Il existe différentes façons d'implémenter la logique personnalisée requise dans le fichier .js. La manière la plus courante est d'utiliser une sous-classe de cds.ApplicationService pour bénéficier d'implémentations génériques prêtes à l'emploi. En effet, la classe cds.ApplicationService est l'implémentation du fournisseur de services par défaut, qui ajoute les fournisseurs génériques déjà abordés à une définition de service.
Pour créer une sous-classe de cds.ApplicationService, nous affectons d'abord le module @sap/cds aux cds constantes dans notre code (ligne 1). Le module @sap/cds est l'objet de façade cds qui permet d'accéder à toutes les API CAP Node.js.
Nous créons ensuite une sous-classe de cds.ApplicationService dans les lignes 4 à 6, dans laquelle nous implémenterons plus tard notre logique personnalisée. Le nom de la sous-classe est arbitraire. Nous l'appelons ici comme notre interface de service, i.e. AdminService.
À la ligne 9, nous rendons la classe AdminService disponible pour l'importation dans d'autres modules. C'est une pratique courante dans Node.js pour structurer le code.
Remarque
Si vous lancez maintenant l'application en saisissant cds watch dans le terminal, le fichier d'implémentation de service ajouté est affiché dans le journal via une sortie similaire à ce qui suit :
1[cds] - serving AdminService { path: '/admin', impl: 'srv/admin-service.js' }


