From 7045914e57f38713f8a8dcbc9e51d1df040768e1 Mon Sep 17 00:00:00 2001 From: "Dzmitry_Tamashevich@epam.com" Date: Sat, 14 Nov 2020 23:22:11 +0300 Subject: [PATCH] add env vars. change db kind --- media-store/app/.env.development | 1 + media-store/app/src/api-service.js | 12 ++++++---- media-store/package.json | 2 +- media-store/srv/browse-tracks-service.js | 30 +++++++++++------------- 4 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 media-store/app/.env.development diff --git a/media-store/app/.env.development b/media-store/app/.env.development new file mode 100644 index 00000000..f89b5dcd --- /dev/null +++ b/media-store/app/.env.development @@ -0,0 +1 @@ +API=http://localhost:4004/ \ No newline at end of file diff --git a/media-store/app/src/api-service.js b/media-store/app/src/api-service.js index f84ef4e2..ea188deb 100644 --- a/media-store/app/src/api-service.js +++ b/media-store/app/src/api-service.js @@ -1,10 +1,14 @@ import { isEmpty } from "lodash"; import axios from "axios"; -const BROWSE_TRACKS_SERVICE = `api/browse-tracks`; -const INVOICES_SERVICE = `api/browse-invoices`; -const USER_SERVICE = `api/users`; -const MANAGE_STORE = `api/manage-store`; +// in dev mode using provided api +// in prod mode using proxy +const API = process.env.API || "api/"; + +const BROWSE_TRACKS_SERVICE = `${API}browse-tracks`; +const INVOICES_SERVICE = `${API}browse-invoices`; +const USER_SERVICE = `${API}users`; +const MANAGE_STORE = `${API}manage-store`; const constructGenresQuery = (genreIds) => { return !isEmpty(genreIds) diff --git a/media-store/package.json b/media-store/package.json index a6263579..466b14b0 100644 --- a/media-store/package.json +++ b/media-store/package.json @@ -29,7 +29,7 @@ "ACCESS_TOKEN_SECRET": "secret", "requires": { "db": { - "kind": "hana" + "kind": "sql" }, "auth": { "impl": "srv/auth.js" diff --git a/media-store/srv/browse-tracks-service.js b/media-store/srv/browse-tracks-service.js index d547243e..34173e1b 100644 --- a/media-store/srv/browse-tracks-service.js +++ b/media-store/srv/browse-tracks-service.js @@ -1,30 +1,28 @@ const cds = require("@sap/cds"); -const selectTracksByEmail = (email) => ` - select tracks.ID - from sap_capire_media_store_Tracks tracks - join sap_capire_media_store_Invoices invoices - on tracks.ID = invoiceItems.track_ID - join sap_capire_media_store_InvoiceItems invoiceItems - on invoices.ID = invoiceItems.invoice_ID - join sap_capire_media_store_Customers customers - on customers.ID = invoices.customer_ID - where (customers.email='${email}' and invoices.status='2') - or (customers.email='${email}' and invoices.status='1') -`; - module.exports = async function () { const db = await cds.connect.to("db"); // connect to database service + const { Invoices, InvoiceItems } = db.entities; + this.on("READ", "MarkedTracks", async (req) => { - const myTrackIds = (await db.run(selectTracksByEmail(req.user.id))).map( - ({ ID }) => ID + const invoiceItemEntries = await db.run( + SELECT.from(InvoiceItems) + .columns("track_ID") + .where( + "invoice_ID in", + SELECT("ID").from(Invoices).where({ + customer_ID: req.user.attr.ID, + }) + ) ); + const trackIds = invoiceItemEntries.map(({ track_ID }) => track_ID); + const result = []; await db.foreach(req.query, (track) => { result.push({ ...track, - alreadyOrdered: myTrackIds.includes(track.ID), + alreadyOrdered: trackIds.includes(track.ID), }); }); return result;