Files
cloud-cap-samples/media-store/srv/browse-tracks-service.js
2021-01-04 14:37:01 +01:00

43 lines
1.2 KiB
JavaScript

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}'
`;
module.exports = async function () {
const db = await cds.connect.to("db"); // connect to database service
this.before("*", (req) => {
console.log(
"[USER]:",
req.user.id,
" [LEVEL]: ",
req.user.attr.level,
"[ROLE]",
req.user.is("user") ? "user" : "other"
);
});
this.on("READ", "MarkedTracks", async (req) => {
const myTrackIds = (
await db.run(cds.parse.cql(selectTracksByEmail(req.user.id)))
).map(({ ID }) => ID);
const result = await db.run(req.query);
return result.map((columns) => {
return {
...columns,
alreadyOrdered: myTrackIds.includes(columns.ID),
};
});
});
};