From 2c0f69a161f90387fa1fbe63d94946c3ede31c8e Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 17 Dec 2019 12:46:10 +0100 Subject: [PATCH] some more cleanup --- packages/bookshop/srv/admin-service.js | 4 ++-- packages/bookshop/srv/external.cds | 27 +++++++++++++------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/bookshop/srv/admin-service.js b/packages/bookshop/srv/admin-service.js index f3d0e71d..88f9a480 100644 --- a/packages/bookshop/srv/admin-service.js +++ b/packages/bookshop/srv/admin-service.js @@ -12,10 +12,10 @@ const { Books, Addresses } = db.entities // entities in local database module.exports = (admin => { // Handler to delegate ValueHelp requests to S/4 backend, fetching current user's addresses from there - admin.on ('READ', 'Addresses', (req) => { + admin.on ('READ', 'usersAddresses', (req) => { const { SELECT } = cds.ql(req) //> convenient alternative to bupa.transaction(req).run(SELECT...) return SELECT.from (externalAddresses) .where ({ BusinessPartner: req.user.id || 'anonymous' }) - //> this is applying projection generically, i.e. the equivalent of: + //> this is applying projection from CDS model generically, i.e. the equivalent of: // const { A_BusinessPartnerAddress } = bupa.entities // return SELECT.from (A_BusinessPartnerAddress, a => { // a.AddressID.as('ID'), diff --git a/packages/bookshop/srv/external.cds b/packages/bookshop/srv/external.cds index e6de79ba..748a55f9 100644 --- a/packages/bookshop/srv/external.cds +++ b/packages/bookshop/srv/external.cds @@ -8,8 +8,7 @@ extend service API_BUSINESS_PARTNER with { /** * Simplified view on external addresses */ - @mashup @cds.autoexpose //> for ValueHelps - entity Addresses as projection on external.A_BusinessPartnerAddress { + @mashup entity Addresses as projection on external.A_BusinessPartnerAddress { key AddressID as ID, key BusinessPartner, Country as country, @@ -35,15 +34,15 @@ extend service API_BUSINESS_PARTNER with { * Mashup w/ services to also serve shipping addresses */ using { AdminService } from './admin-service'; -extend service AdminService { - // entity usersAddresses as projection on external.Addresses; +extend service AdminService { // for ValueHelps from S/4 backend + @readonly entity usersAddresses as projection on external.Addresses; } // TODO: not used so far... using { CatalogService } from './cat-service'; -extend service CatalogService { - @readonly @requires:'authenticated-user' - entity usersAddresses as projection on external.Addresses; +extend service CatalogService { // for ValueHelps from S/4 backend + @requires:'authenticated-user' + @readonly entity usersAddresses as projection on external.Addresses; } @@ -52,13 +51,6 @@ extend service CatalogService { */ using { sap.capire.bookshop } from '../db/schema'; -/** - * Extend Orders to maintain references to (replicated) external Addresses - */ -extend bookshop.Orders with { - shippingAddress : Association to bookshop.Addresses; -} - /** * Add an entity to replicate external address data for quick access, * e.g. when displaying lists of orders. @@ -67,3 +59,10 @@ extend bookshop.Orders with { entity sap.capire.bookshop.Addresses as SELECT from external.Addresses { *, false as tombstone : Boolean }; + +/** + * Extend Orders to with references to replicated external Addresses + */ +extend bookshop.Orders with { + shippingAddress : Association to bookshop.Addresses; +}