Compare commits

...

43 Commits

Author SHA1 Message Date
Lothar Bender
8c5a20bdb0 Merge branch 'main' into compose-with-cds-plugins 2023-08-25 17:33:56 +02:00
dependabot[bot]
c14ee0062c Bump @types/jest from 29.5.3 to 29.5.4 (#571)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.3 to 29.5.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-24 13:23:08 +00:00
dependabot[bot]
5eb293d378 Bump @types/node from 20.5.0 to 20.5.4 (#573)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.5.0 to 20.5.4.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-24 13:21:44 +00:00
dependabot[bot]
b8469d562f Bump chai from 4.3.7 to 4.3.8 (#574)
Bumps [chai](https://github.com/chaijs/chai) from 4.3.7 to 4.3.8.
- [Release notes](https://github.com/chaijs/chai/releases)
- [Changelog](https://github.com/chaijs/chai/blob/4.x.x/History.md)
- [Commits](https://github.com/chaijs/chai/compare/v4.3.7...v4.3.8)

---
updated-dependencies:
- dependency-name: chai
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-24 15:19:15 +02:00
Daniel Schlachter
afd4df3f39 similar behavior cds w bookstore cds w compose 2023-08-18 15:45:22 +02:00
Daniel Schlachter
0228841260 Merge branch 'main' into compose-with-cds-plugins 2023-08-18 11:48:30 +02:00
Daniel Schlachter
24ad8a84da Merge branch 'compose-with-cds-plugins' of https://github.com/SAP-samples/cloud-cap-samples into compose-with-cds-plugins 2023-08-18 11:47:46 +02:00
Daniel Schlachter
e3acbb9832 compose adjustments 2023-08-18 11:46:27 +02:00
dependabot[bot]
36a800165b Bump @sap/cds from 7.1.1 to 7.1.2 (#568)
Bumps [@sap/cds](https://cap.cloud.sap/) from 7.1.1 to 7.1.2.

---
updated-dependencies:
- dependency-name: "@sap/cds"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-16 15:30:53 +02:00
dependabot[bot]
e5e86cb733 Bump @types/node from 20.4.9 to 20.5.0 (#567)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.9 to 20.5.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-14 16:10:24 +02:00
dependabot[bot]
f5c7b50a6d Bump @cap-js-community/odata-v2-adapter from 1.11.5 to 1.11.6 (#566)
Bumps [@cap-js-community/odata-v2-adapter](https://github.com/cap-js-community/odata-v2-adapter) from 1.11.5 to 1.11.6.
- [Release notes](https://github.com/cap-js-community/odata-v2-adapter/releases)
- [Changelog](https://github.com/cap-js-community/odata-v2-adapter/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cap-js-community/odata-v2-adapter/compare/v1.11.5...v1.11.6)

---
updated-dependencies:
- dependency-name: "@cap-js-community/odata-v2-adapter"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-10 16:04:45 +02:00
dependabot[bot]
6ae95cfa51 Bump @types/node from 20.4.8 to 20.4.9 (#565)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.8 to 20.4.9.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-09 16:02:11 +02:00
dependabot[bot]
ec03c6418b Bump @types/node from 20.4.6 to 20.4.8 (#564)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.6 to 20.4.8.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-09 12:49:39 +02:00
dependabot[bot]
021df191ec Bump @types/node from 20.4.5 to 20.4.6 (#562)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.5 to 20.4.6.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-03 16:37:01 +02:00
Daniel Schlachter
2e0a5aeb73 Merge branch 'main' into compose-with-cds-plugins 2023-08-03 10:02:33 +02:00
dependabot[bot]
8b978a94ec Bump @cap-js-community/odata-v2-adapter from 1.11.4 to 1.11.5 (#560)
Bumps [@cap-js-community/odata-v2-adapter](https://github.com/cap-js-community/odata-v2-adapter) from 1.11.4 to 1.11.5.
- [Release notes](https://github.com/cap-js-community/odata-v2-adapter/releases)
- [Changelog](https://github.com/cap-js-community/odata-v2-adapter/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cap-js-community/odata-v2-adapter/compare/v1.11.4...v1.11.5)

---
updated-dependencies:
- dependency-name: "@cap-js-community/odata-v2-adapter"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-02 15:03:17 +00:00
dependabot[bot]
9596511883 Bump @cap-js/sqlite from 1.0.1 to 1.1.0 (#561)
Bumps [@cap-js/sqlite](https://github.com/cap-js/cds-dbs) from 1.0.1 to 1.1.0.
- [Release notes](https://github.com/cap-js/cds-dbs/releases)
- [Commits](https://github.com/cap-js/cds-dbs/compare/v1.0.1...v1.1.0)

---
updated-dependencies:
- dependency-name: "@cap-js/sqlite"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-02 17:01:13 +02:00
Daniel Schlachter
191e577e51 Merge branch 'main' into compose-with-cds-plugins 2023-08-01 10:47:09 +02:00
dependabot[bot]
d67af1432b Bump @sap/cds from 7.0.3 to 7.1.0 (#558)
Bumps [@sap/cds](https://cap.cloud.sap/) from 7.0.3 to 7.1.0.

---
updated-dependencies:
- dependency-name: "@sap/cds"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 19:18:36 +02:00
Olena
52b4dbeacc Merge pull request #556 from SAP-samples/rm-mocked-registry
clean up: removed mocked registry
2023-07-28 14:24:06 +02:00
D070615
4a8d8a0ec3 clean up: removed mocked registry 2023-07-28 11:18:25 +02:00
Daniel Hutzel
a9f040edcc Merge branch 'main' into compose-with-cds-plugins 2023-07-26 17:10:21 +02:00
Daniel Hutzel
b0baf3b5aa Delete bookshop/@cds-models directory 2023-07-26 17:08:47 +02:00
Daniel Hutzel
86fb1d20d3 my-project -> compose 2023-07-26 17:06:08 +02:00
Daniel Hutzel
dfb7d80849 Compose with cds-plugins 2023-07-26 17:01:15 +02:00
dependabot[bot]
cdcfdafbdc Bump @types/node from 20.4.2 to 20.4.5 (#554)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.2 to 20.4.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-26 14:24:22 +02:00
dependabot[bot]
e29394eac0 Bump @sap/cds from 7.0.2 to 7.0.3 (#550)
Bumps [@sap/cds](https://cap.cloud.sap/) from 7.0.2 to 7.0.3.

---
updated-dependencies:
- dependency-name: "@sap/cds"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-20 17:58:45 +02:00
Daniel Hutzel
06c583d0cd cosmetics 2023-07-17 14:22:00 +02:00
dependabot[bot]
1d14e75691 Bump @types/node from 20.4.1 to 20.4.2 (#549)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.1 to 20.4.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-13 15:35:40 +02:00
dependabot[bot]
9991e73a37 Bump @types/jest from 29.5.2 to 29.5.3 (#548)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.2 to 29.5.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 15:01:10 +02:00
dependabot[bot]
8f9e875865 Bump @sap/cds from 7.0.1 to 7.0.2 (#545)
Bumps [@sap/cds](https://cap.cloud.sap/) from 7.0.1 to 7.0.2.

---
updated-dependencies:
- dependency-name: "@sap/cds"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 12:30:51 +00:00
dependabot[bot]
a92fb4c7cd Bump @types/node from 20.3.3 to 20.4.1 (#546)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.3.3 to 20.4.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 12:28:59 +00:00
dependabot[bot]
f974ac1bf1 Bump semver from 7.5.3 to 7.5.4 (#547)
Bumps [semver](https://github.com/npm/node-semver) from 7.5.3 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.3...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 14:27:20 +02:00
Daniel Hutzel
11770f68f4 init.js revisited (#538)
* init.js revisited

* Reverting rm sqlite3

* .

---------

Co-authored-by: Johannes Vogel <31311694+johannes-vogel@users.noreply.github.com>
2023-07-05 11:10:09 +02:00
Daniel Hutzel
96473d45c8 Adjusting odata paths for cds7 (#543)
* Adjusting odata paths for cds7

* Still using old sqlite3

* npm ci

* Remove Node 14 tests
2023-07-05 11:07:20 +02:00
Daniel Hutzel
c089c9777b Using latest packages + new db services 2023-07-03 16:05:00 +02:00
Johannes Vogel
68f8a4fe7b restore common check in init.js (#535) 2023-07-03 12:27:55 +02:00
Daniel Hutzel
60a0ea582e Using UPSERTs in init.js 2023-06-30 18:37:15 +02:00
Daniel Hutzel
8ffa3f052d Fixing paths for cds7 2023-06-30 18:36:38 +02:00
dependabot[bot]
6c1c1b1785 Bump @sap/cds from 6.8.2 to 6.8.4 (#526)
Bumps [@sap/cds](https://cap.cloud.sap/) from 6.8.2 to 6.8.4.

---
updated-dependencies:
- dependency-name: "@sap/cds"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-15 15:05:45 +02:00
Heiko Witteborg
7283ac7042 Merge pull request #524 from SAP-samples/prepare-for-new-protocol-handling
Prepare for new protocol handling
2023-06-14 11:42:03 +02:00
d049904
7add92a05c Prepare for new protocol handling 2023-06-13 17:00:32 +02:00
dependabot[bot]
aa13772572 Bump @types/node from 20.2.5 to 20.3.1 (#523)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.2.5 to 20.3.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-13 15:41:58 +02:00
35 changed files with 962 additions and 343 deletions

View File

@@ -16,7 +16,7 @@ jobs:
strategy:
matrix:
node-version: [18.x, 16.x, 14.x]
node-version: [18.x, 16.x]
steps:
- uses: actions/checkout@v2

View File

@@ -54,24 +54,6 @@ npx jest
```
> While mocha is a bit smaller and faster, jest runs tests in parallel and isolation, which allows to run all tests.
### Serve `npm`
We've included a simple npm registry mock, which allows you to do an `npm install @capire/<package>` locally. Use it as follows:
1. Start the @capire registry:
```sh
npm run registry
```
> While running this will have `@capire:registry=http://localhost:4444` set with npmrc.
2. Install one of the @capire packages wherever you like, for example:
```sh
npm add @capire/common @capire/bookshop
```
## Code Tours
Take one of the [guided tours](.tours) in VS Code through our CAP samples and learn which CAP features are showcased by the different parts of the repository. Just install the [CodeTour extension](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour) for VS Code. We'll add more code tours in the future. Stay tuned!

3
bookshop/cds-plugin.js Normal file
View File

@@ -0,0 +1,3 @@
cds.once('bootstrap',(app)=>{
app.serve ('/bookshop') .from ('@capire/bookshop','app/vue')
})

View File

@@ -4,15 +4,10 @@
* currencies, if not obtained through @capire/common.
*/
module.exports = async (tx)=>{
const has_common = tx.model.definitions['sap.common.Currencies']?.elements.numcode
if (has_common) return
const already_filled = await tx.exists('sap.common.Currencies',{code:'EUR'})
if (already_filled) return
await tx.run (INSERT.into ('sap.common.Currencies') .columns (
// NOTE: We use cds.on('served') to delay the UPSERTs after the db init
// to run after all INSERTs from .csv files happened.
module.exports = cds.on('served', ()=> cds.run(
UPSERT.into ('sap.common.Currencies') .columns (
[ 'code', 'symbol', 'name' ]
) .rows (
[ 'EUR', '€', 'Euro' ],
@@ -20,5 +15,5 @@ module.exports = async (tx)=>{
[ 'GBP', '£', 'British Pound' ],
[ 'ILS', '₪', 'Shekel' ],
[ 'JPY', '¥', 'Yen' ],
)
))
}

View File

@@ -3,9 +3,9 @@ namespace sap.capire.bookshop;
entity Books : managed {
key ID : Integer;
@mandatory title : localized String(111);
title : localized String(111) @mandatory ;
descr : localized String(1111);
@mandatory author : Association to Authors;
author : Association to Authors @mandatory;
genre : Association to Genres;
stock : Integer;
price : Decimal;
@@ -15,7 +15,7 @@ entity Books : managed {
entity Authors : managed {
key ID : Integer;
@mandatory name : String(111);
name : String(111) @mandatory;
dateOfBirth : Date;
dateOfDeath : Date;
placeOfBirth : String;

View File

@@ -9,6 +9,9 @@
"index.cds",
"index.js"
],
"devDependencies": {
"@cap-js/sqlite": "*"
},
"dependencies": {
"@sap/cds": ">=5.9",
"express": "^4.17.1",
@@ -21,7 +24,9 @@
},
"cds": {
"requires": {
"db": "sql"
"bookshop-services": {
"model": "@capire/bookshop"
}
}
}
}

View File

@@ -1,5 +1,5 @@
using { sap.capire.bookshop as my } from '../db/schema';
service AdminService @(requires:'admin') {
service AdminService @(requires:'admin', path:'/admin') {
entity Books as projection on my.Books;
entity Authors as projection on my.Authors;
}

View File

@@ -1,7 +1,7 @@
/**
* Exposes user information
*/
service UserService {
service UserService @(path: '/user') {
/**
* The current user
*/

View File

@@ -6,6 +6,7 @@
"@capire/reviews": "*",
"@capire/orders": "*",
"@capire/common": "*",
"@capire/fiori": "*",
"@capire/data-viewer": "*",
"@sap/cds": ">=5",
"express": "^4.17.1"

View File

@@ -1,22 +1,18 @@
const cds = require ('@sap/cds')
// Add routes to UIs from imported packages
cds.once('bootstrap',(app)=>{
app.serve ('/admin-authors') .from ('@capire/fiori','app/admin-authors')
app.serve ('/admin-books') .from ('@capire/fiori','app/admin-books')
app.serve ('/browse-books') .from ('@capire/fiori','app/browse')
})
// Add mashup logic
cds.once('served', require('./srv/mashup'))
// Add routes to UIs from imported packages
cds.once('bootstrap',(app)=>{
app.serve ('/bookshop') .from ('@capire/bookshop','app/vue')
app.serve ('/reviews') .from ('@capire/reviews','app/vue')
app.serve ('/orders') .from('@capire/orders','app/orders')
app.serve ('/data') .from('@capire/data-viewer','app/viewer')
})
// Add Swagger UI
require('./srv/swagger-ui')
// Returning cds.server
module.exports = cds.server
// For didactic reasons in capire
const { ReviewsService, OrdersService } = cds.requires
if (!ReviewsService?.credentials && !OrdersService?.credentials) cds.requires.messaging = false

View File

@@ -30,13 +30,3 @@ extend Orders with {
book : Association to Books on product.ID = book.ID
}
}
// Add orders fiori app (in case of embedded orders service)
using from '@capire/orders/app/fiori';
// Add data browser
using from '@capire/data-viewer';
// Incorporate pre-build extensions from...
using from '@capire/common';

0
common/cds-plugin.js Normal file
View File

View File

@@ -4,5 +4,12 @@
"version": "1.0.0",
"dependencies": {
"@sap/cds": "*"
},
"cds": {
"requires": {
"common-data": {
"model": "@capire/common"
}
}
}
}

View File

@@ -0,0 +1,168 @@
{
"services": {
"LaunchPage": {
"adapter": {
"config": {
"catalogs": [],
"groups": [
{
"id": "Bookshop",
"title": "Bookshop",
"isPreset": true,
"isVisible": true,
"isGroupLocked": false,
"tiles": [
{
"id": "BrowseBooks",
"tileType": "sap.ushell.ui.tile.StaticTile",
"properties": {
"title": "Browse Books",
"targetURL": "#Books-display"
}
},
{
"id": "BrowseGenres",
"tileType": "sap.ushell.ui.tile.StaticTile",
"properties": {
"title": "Browse Genres (OData v2)",
"targetURL": "#Genres-display"
}
}
]
},
{
"id": "Administration",
"title": "Administration",
"isPreset": true,
"isVisible": true,
"isGroupLocked": false,
"tiles": [
{
"id": "ManageBooks",
"tileType": "sap.ushell.ui.tile.StaticTile",
"properties": {
"title": "Manage Books",
"targetURL": "#Books-manage"
}
},
{
"id": "ManageAuthors",
"tileType": "sap.ushell.ui.tile.StaticTile",
"properties": {
"title": "Manage Authors",
"targetURL": "#Authors-display"
}
},
{
"id": "ManageOrders",
"tileType": "sap.ushell.ui.tile.StaticTile",
"properties": {
"title": "Manage Orders",
"targetURL": "#Orders-manage"
}
}
]
}
]
}
}
},
"NavTargetResolution": {
"config": {
"enableClientSideTargetResolution": true
}
},
"ClientSideTargetResolution": {
"adapter": {
"config": {
"inbounds": {
"BrowseBooks": {
"semanticObject": "Books",
"action": "display",
"title": "Browse Books",
"signature": {
"parameters": {
"Books.ID": {
"renameTo": "ID"
},
"Authors.books.ID": {
"renameTo": "ID"
}
},
"additionalParameters": "ignored"
},
"resolutionResult": {
"applicationType": "SAPUI5",
"additionalInformation": "SAPUI5.Component=bookshop",
"url": "/browse/webapp"
}
},
"BrowseAuthors": {
"semanticObject": "Authors",
"action": "display",
"title": "Browse Authors",
"signature": {
"parameters": {
"Books.author.ID":{
"renameTo": "ID"
}
},
"additionalParameters": "ignored"
},
"resolutionResult": {
"applicationType": "SAPUI5",
"additionalInformation": "SAPUI5.Component=authors",
"url": "/admin-authors/webapp"
}
},
"BrowseGenres": {
"semanticObject": "Genres",
"action": "display",
"title": "Browse Genres",
"signature": {
"parameters": {
"Genre.ID": {
"renameTo": "ID"
}
},
"additionalParameters": "ignored"
},
"resolutionResult": {
"applicationType": "SAPUI5",
"additionalInformation": "SAPUI5.Component=genres",
"url": "/genres/webapp"
}
},
"ManageBooks": {
"semanticObject": "Books",
"action": "manage",
"title": "Manage Books",
"signature": {
"parameters": {},
"additionalParameters": "allowed"
},
"resolutionResult": {
"applicationType": "SAPUI5",
"additionalInformation": "SAPUI5.Component=books",
"url": "/admin-books/webapp"
}
},
"ManageOrders": {
"semanticObject": "Orders",
"action": "manage",
"signature": {
"parameters": {},
"additionalParameters": "allowed"
},
"resolutionResult": {
"applicationType": "SAPUI5",
"additionalInformation": "SAPUI5.Component=orders",
"url": "/orders/webapp"
}
}
}
}
}
}
}
}

12
compose/package.json Normal file
View File

@@ -0,0 +1,12 @@
{
"name": "@capire/bookstore",
"version": "1.0.0",
"dependencies": {
"@capire/bookshop": "*",
"@capire/reviews": "*",
"@capire/fiori": "*",
"@capire/orders": "*",
"@sap/cds": ">=5",
"express": "^4.17.1"
}
}

8
compose/server.js Normal file
View File

@@ -0,0 +1,8 @@
const cds = require ('@sap/cds')
// Add Swagger UI
require('./srv/swagger-ui')
// For didactic reasons in capire
const { ReviewsService, OrdersService } = cds.requires
if (!ReviewsService?.credentials && !OrdersService?.credentials) cds.requires.messaging = false

10
compose/srv/swagger-ui.js Normal file
View File

@@ -0,0 +1,10 @@
// -----------------------------------------------------------------------
// Adding Swagger UI - see https://cap.cloud.sap/docs/advanced/openapi
const cds = require ('@sap/cds')
try {
const cds_swagger = require ('cds-swagger-ui-express')
cds.once ('bootstrap', app => app.use (cds_swagger()) )
} catch (err) {
if (err.code !== 'MODULE_NOT_FOUND') throw err
}

View File

@@ -1,5 +1,5 @@
/* global Vue axios */ //> from vue.html
const GET = (url) => axios.get('/-data'+url)
const GET = (url) => axios.get('/odata/v4/-data'+url)
const storageGet = (key, def) => localStorage.getItem('data-viewer:'+key) || def
const storageSet = (key, val) => localStorage.setItem('data-viewer:'+key, val)
const columnKeysFirst = (c1, c2) => {

View File

@@ -0,0 +1,3 @@
cds.once('bootstrap',(app)=>{
app.serve ('/data') .from('@capire/data-viewer','app/viewer')
})

View File

@@ -9,5 +9,12 @@
"app",
"srv",
"index.cds"
]
],
"cds": {
"requires": {
"orders-service": {
"model": "@capire/data-viewer"
}
}
}
}

View File

@@ -33,7 +33,7 @@
"resources": "resources.json",
"dataSources": {
"main": {
"uri": "/v2/browse",
"uri": "/odata/v2/browse",
"type": "OData",
"settings": {
"annotations": ["localAnnotations"],

9
fiori/cds-plugin.js Normal file
View File

@@ -0,0 +1,9 @@
// install OData v2 adapter
const cds = require("@sap/cds")
const proxy = require('@cap-js-community/odata-v2-adapter')
const opts = global.it ? { target:'auto' } : {} // for tests, set 'auto' to detect port dynamically
cds.once('bootstrap', app => {
app.use(proxy(opts)) // install proxy
// cds.log('cov2ap','silent') // suppress anoying log outpout, e.g. for `npm run mocha -- --reporter nyan`
app.serve ('/fiori-apps') .from ('@capire/fiori','app/fiori-apps.html')
})

View File

@@ -1 +1,8 @@
using from './db/sqlite/index';
using from './app/services';
using from './app/genres/fiori-service';
using from './app/browse/fiori-service';
using from './app/admin-books/fiori-service';
using from './app/admin-authors/fiori-service';
using from './db/common';
using from './app/common';

View File

@@ -22,6 +22,9 @@
"kind": "odata",
"model": "@capire/orders"
},
"self": {
"model": "@capire/fiori"
},
"messaging": {
"[production]": {
"kind": "enterprise-messaging"

View File

@@ -3,6 +3,6 @@ const cds = require("@sap/cds")
const proxy = require('@cap-js-community/odata-v2-adapter')
const opts = global.it ? { target:'auto' } : {} // for tests, set 'auto' to detect port dynamically
cds.on('bootstrap', app => app.use(proxy(opts))) // install proxy
cds.log('cov2ap','silent') // suppress anoying log outpout, e.g. for `npm run mocha -- --reporter nyan`
// cds.log('cov2ap','silent') // suppress anoying log outpout, e.g. for `npm run mocha -- --reporter nyan`
module.exports = require('@capire/bookstore/server.js')

View File

@@ -1,3 +1,3 @@
service say {
service say @(path: '/say') {
function hello (to:String) returns String;
}

View File

@@ -8,7 +8,7 @@
"i18n": "i18n/i18n.properties",
"dataSources": {
"OrdersService": {
"uri": "/orders/",
"uri": "/odata/v4/orders/",
"type": "OData",
"settings": {
"odataVersion": "4.0"

3
orders/cds-plugin.js Normal file
View File

@@ -0,0 +1,3 @@
cds.once('bootstrap',(app)=>{
app.serve ('/orders') .from('@capire/orders','app/orders')
})

View File

@@ -4,5 +4,12 @@
"dependencies": {
"@capire/common": "*",
"@sap/cds": ">=5"
},
"cds": {
"requires": {
"orders-service": {
"model": "@capire/orders"
}
}
}
}

942
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
"repository": "https://github.com/sap-samples/cloud-cap-samples.git",
"author": "daniel.hutzel@sap.com",
"dependencies": {
"@sap/cds": ">=5.5.3"
"@sap/cds": ">=7"
},
"workspaces": [
"./bookshop",

3
reviews/cds-plugin.js Normal file
View File

@@ -0,0 +1,3 @@
cds.once('bootstrap',(app)=>{
app.serve ('/reviews') .from ('@capire/reviews','app/vue')
})

View File

@@ -12,6 +12,10 @@
},
"cds": {
"requires": {
"ReviewsService": {
"kind": "odata",
"model": "@capire/reviews"
},
"messaging": {
"[development]": { "kind": "file-based-messaging" },
"[hybrid]": { "kind": "enterprise-messaging-shared" },

View File

@@ -1,6 +1,6 @@
using { sap.capire.reviews as my } from '../db/schema';
service ReviewsService {
service ReviewsService @(path:'/reviews') {
// Sync API
entity Reviews as projection on my.Reviews excluding { likes }

View File

@@ -8,7 +8,7 @@ describe('cap/samples - Fiori APIs - v2', function() {
// if (this.timeout) this.timeout(1e6)
it('serves $metadata documents in v2', async () => {
const { headers, data } = await GET `/v2/browse/$metadata`
const { headers, data } = await GET `/odata/v2/browse/$metadata`
expect(headers).to.contain({
'content-type': 'application/xml',
'dataserviceversion': '2.0',
@@ -17,7 +17,7 @@ describe('cap/samples - Fiori APIs - v2', function() {
})
it('serves Books in v2', async () => {
const { data } = await GET `/v2/browse/Books`
const { data } = await GET `/odata/v2/browse/Books`
expect(data).to.containSubset({d:{results:[]}})
expect(data.d.results.length).to.be.greaterThanOrEqual(5)
})