From 6f9737ae382f03393debd95fb33f8885b3a601a2 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 29 May 2020 16:56:03 +0200 Subject: [PATCH] Separated reviewed and reviews --- .../test/bookshop => reviewed/db}/schema.cds | 0 .../test/bookshop => reviewed}/package.json | 6 +++--- {reviews/test/bookshop => reviewed}/server.js | 14 ++++++++----- .../4004.http => reviewed/test/requests.http | 20 +++++++++++-------- reviews/package.json | 2 +- reviews/test/5005.http | 13 ------------ 6 files changed, 25 insertions(+), 30 deletions(-) rename {reviews/test/bookshop => reviewed/db}/schema.cds (100%) rename {reviews/test/bookshop => reviewed}/package.json (83%) rename {reviews/test/bookshop => reviewed}/server.js (82%) rename reviews/test/4004.http => reviewed/test/requests.http (57%) delete mode 100644 reviews/test/5005.http diff --git a/reviews/test/bookshop/schema.cds b/reviewed/db/schema.cds similarity index 100% rename from reviews/test/bookshop/schema.cds rename to reviewed/db/schema.cds diff --git a/reviews/test/bookshop/package.json b/reviewed/package.json similarity index 83% rename from reviews/test/bookshop/package.json rename to reviewed/package.json index 63025aa1..1a11aed8 100644 --- a/reviews/test/bookshop/package.json +++ b/reviewed/package.json @@ -2,8 +2,8 @@ "name": "@capire/bookshop-with-reviews", "version": "1.0.0", "dependencies": { - "@capire/bookshop": "../../../bookshop", - "@capire/reviews": "..", + "@capire/bookshop": "../bookshop", + "@capire/reviews": "../reviews", "@sap/cds": "^3.33.1", "express": "^4.17.1" }, @@ -20,4 +20,4 @@ } } } -} \ No newline at end of file +} diff --git a/reviews/test/bookshop/server.js b/reviewed/server.js similarity index 82% rename from reviews/test/bookshop/server.js rename to reviewed/server.js index dd075317..a1661900 100644 --- a/reviews/test/bookshop/server.js +++ b/reviewed/server.js @@ -12,9 +12,13 @@ cds.once('served', async()=>{ // react on event messages from reviews service const ReviewsService = await cds.connect.to ('ReviewsService') const db = await cds.connect.to ('db') + + // reflect entities required below... + const { Books } = db.entities('sap.capire.bookshop') + const { Reviews } = ReviewsService.entities + ReviewsService.on ('reviewed', (msg) => { console.debug ('> received:', msg.event, msg.data) - const { Books } = db.entities('sap.capire.bookshop') const { subject, rating } = msg.data const tx = db.tx (msg) // TODO: db.tx(msg) fully implemented? return tx.update (Books,subject) .with ({rating}) @@ -24,10 +28,10 @@ cds.once('served', async()=>{ const CatalogService = await cds.connect.to ('CatalogService') CatalogService.impl (srv => srv.on ('READ', 'Books/reviews', (req) => { console.debug ('> delegating to ReviewsService') - const { Reviews } = ReviewsService.entities - const [ subject ] = req.params - const tx = ReviewsService.tx (req) - return tx.read (Reviews) .where({subject}) .columns (req.query.SELECT.columns) + const [ id ] = req.params + const tx = ReviewsService.tx(req) + return tx.read (Reviews) .where ({ subject: String(id) }) + .columns (req.query.SELECT.columns) })) }) diff --git a/reviews/test/4004.http b/reviewed/test/requests.http similarity index 57% rename from reviews/test/4004.http rename to reviewed/test/requests.http index 36ebc0b6..8ee0a241 100644 --- a/reviews/test/4004.http +++ b/reviewed/test/requests.http @@ -1,13 +1,16 @@ ################################################# # -# To ReviewsService mocked in bookshop process +# To ReviewsService # +# move the right down: +@reviews-service = http://localhost:4004/reviews +@reviews-service = http://localhost:5005/reviews -GET http://localhost:4004/reviews/Reviews? +### Get all reviews +GET {{reviews-service}}/Reviews -### - -POST http://localhost:4004/reviews/Reviews +### Add a new review (with random rating) +POST {{reviews-service}}/Reviews Content-Type: application/json;IEEE754Compatible=true {"subject":"201", "title":"boo"} @@ -20,17 +23,18 @@ Content-Type: application/json;IEEE754Compatible=true # (both in-process as well as separate one) # +@bookshop = http://localhost:4004 ### Request to CatalogService > delegated to ReviewsService -GET http://localhost:4004/browse/Books(201)/reviews? +GET {{bookshop}}/browse/Books(201)/reviews? &$select=rating,date,reviewer,title ### Alternative OData URL -GET http://localhost:4004/browse/Books/201/reviews? +GET {{bookshop}}/browse/Books/201/reviews? &$select=rating,date,reviewer,title ### -GET http://localhost:4004/browse/Books(201)? +GET {{bookshop}}/browse/Books(201)? &$select=ID,title,rating &$expand=reviews # Note: the $expand only works in case of ReviewsService in same process diff --git a/reviews/package.json b/reviews/package.json index 99889286..b974df69 100644 --- a/reviews/package.json +++ b/reviews/package.json @@ -12,7 +12,7 @@ }, "scripts": { "reviews-service": "cds watch", - "bookshop": "cds watch test/bookshop" + "books-reviewed": "cds watch ../reviewed" }, "cds": { "requires": { diff --git a/reviews/test/5005.http b/reviews/test/5005.http deleted file mode 100644 index 2b3de054..00000000 --- a/reviews/test/5005.http +++ /dev/null @@ -1,13 +0,0 @@ -################################################# -# -# To ReviewsService running as separate process -# - -GET http://localhost:5005/reviews/Reviews? - -### - -POST http://localhost:5005/reviews/Reviews -Content-Type: application/json;IEEE754Compatible=true - -{"subject":"201", "title":"boo"}