From e042317f82cdfe031eba8d55789f22719163a26a Mon Sep 17 00:00:00 2001 From: D065023 Date: Tue, 28 Jan 2020 09:07:23 +0100 Subject: [PATCH] sync API --- packages/bookshop/package.json | 5 ++++- packages/bookshop/srv/cat-service.cds | 10 ++++++++++ packages/bookshop/srv/cat-service.js | 5 ++++- .../API_BUSINESS_PARTNER-A_BusinessPartnerAddress.csv | 5 +++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 packages/bookshop/srv/external/data/API_BUSINESS_PARTNER-A_BusinessPartnerAddress.csv diff --git a/packages/bookshop/package.json b/packages/bookshop/package.json index 9b21f4e2..1015c25f 100644 --- a/packages/bookshop/package.json +++ b/packages/bookshop/package.json @@ -14,7 +14,10 @@ "requires": { "API_BUSINESS_PARTNER": { "kind": "odata", - "model": "srv/external/API_BUSINESS_PARTNER" + "model": "srv/external/API_BUSINESS_PARTNER", + "credentials": { + "destination": "API098" + } } } } diff --git a/packages/bookshop/srv/cat-service.cds b/packages/bookshop/srv/cat-service.cds index efe7b5d9..2c3bbc94 100644 --- a/packages/bookshop/srv/cat-service.cds +++ b/packages/bookshop/srv/cat-service.cds @@ -1,4 +1,5 @@ using { sap.capire.bookshop as my } from '../db/schema'; +using { API_BUSINESS_PARTNER.A_BusinessPartnerAddress } from './external/API_BUSINESS_PARTNER.csn'; @path:'/browse' service CatalogService { @@ -7,6 +8,15 @@ service CatalogService { author.name as author } excluding { createdBy, modifiedBy }; + @readonly entity Addresses as projection on A_BusinessPartnerAddress { + key AddressID, + key BusinessPartner, + StreetName, + CityName, + HouseNumber, + Country + }; + @requires_: 'authenticated-user' @insertonly entity Orders as projection on my.Orders; diff --git a/packages/bookshop/srv/cat-service.js b/packages/bookshop/srv/cat-service.js index bd04c51e..a5a58f27 100644 --- a/packages/bookshop/srv/cat-service.js +++ b/packages/bookshop/srv/cat-service.js @@ -2,9 +2,12 @@ const cds = require('@sap/cds') const { Books } = cds.entities /** Service implementation for CatalogService */ -module.exports = cds.service.impl(function() { +module.exports = cds.service.impl(async function() { + const bupaSrv = await cds.connect.to('API_BUSINESS_PARTNER') + const { A_BusinessPartnerAddress } = bupaSrv.entities this.after ('READ', 'Books', each => each.stock > 111 && _addDiscount2(each,11)) this.before ('CREATE', 'Orders', _reduceStock) + this.on('READ', 'Addresses', req => bupaSrv.run(req.query.from(A_BusinessPartnerAddress))) }) /** Add some discount for overstocked books */ diff --git a/packages/bookshop/srv/external/data/API_BUSINESS_PARTNER-A_BusinessPartnerAddress.csv b/packages/bookshop/srv/external/data/API_BUSINESS_PARTNER-A_BusinessPartnerAddress.csv new file mode 100644 index 00000000..752c4d96 --- /dev/null +++ b/packages/bookshop/srv/external/data/API_BUSINESS_PARTNER-A_BusinessPartnerAddress.csv @@ -0,0 +1,5 @@ +BusinessPartner;AddressID;CityName;PostalCode;Country;StreetName;HouseNumber +ALICE;62640;Walldorf;69190;GER;Dietmer-Hopp-Allee;16 +ALICE;62641;Berlin;69390;GER;Berlin-Street;19 +BOB;62341;Karlsruhe;61390;GER;Karlsruhe-Street;19 +anonymous;61321;Sometown;61290;GER;Sometown-Street;19 \ No newline at end of file