Como la mayoría de las tareas estándar y los casos de uso están cubiertos por proveedores de servicios genéricos, la necesidad de añadir código de implementación de servicio se reduce y minimiza en gran medida.
Los casos restantes se reducen a una lógica personalizada real, específica de su dominio y aplicación, como las validaciones programáticas específicas de dominio.
Por ejemplo, programemos una validación que asegure que la fecha de nacimiento pasada sea anterior a la fecha de muerte pasada al crear un nuevo autor a través del AdminService.
La forma más fácil de añadir implementaciones de servicio personalizadas es simplemente colocar un archivo igual de llamado .js junto al archivo .cds que contiene la definición de servicio correspondiente. Es decir, en nuestro caso colocamos un archivo llamado admin-service.js en la carpeta srv de nuestro proyecto, ya que esta carpeta también contiene el archivo admin-service.cds, que se utiliza para definir el AdminService (véase la siguiente figura).

Nota
Existen diferentes formas de implementar la lógica personalizada necesaria en el archivo .js. La forma más común es utilizar una subclase de cds.ApplicationService para beneficiarse de implementaciones genéricas listas para usar. Esto se debe a que la clase cds.ApplicationService es la implementación por defecto del proveedor de servicios, que añade los proveedores genéricos ya discutidos a una definición de servicio.
Para crear una subclase de cds.ApplicationService, primero asignamos el módulo @sap/cds a la constante cds en nuestro código (línea 1). El módulo @sap/cds es el objeto de fachada cds que proporciona acceso a todas las API CAP Node.js.
A continuación, creamos una subclase de cds.ApplicationService en las líneas 4 a 6, en la que implementaremos nuestra lógica personalizada. El nombre de la subclase es arbitrario. Lo llamamos aquí como nuestra interfaz de servicio, es decir, AdminService.
En la línea 9, hacemos que la clase AdminService esté disponible para importarla a otros módulos. Esta es una práctica común en Node.js para estructurar el código.
Nota
Si ahora inicia la aplicación introduciendo cds watch en el terminal, el fichero de implementación de servicio añadido se visualiza en el log mediante una salida similar a la siguiente:
1[cds] - serving AdminService { path: '/admin', impl: 'srv/admin-service.js' }


