Compare commits

..

4 Commits

Author SHA1 Message Date
Robin de Silva Jayasinghe
61d6c0d58f shared db at design- and runtime 2024-04-24 15:56:47 +02:00
Robin de Silva Jayasinghe
4179493ce7 intial change to add support for shared schema 2024-04-17 16:03:49 +02:00
dependabot[bot]
d08749fd21 Bump the production-dependencies group with 2 updates (#709)
Bumps the production-dependencies group with 2 updates: [@sap/cds](https://cap.cloud.sap/) and [@cap-js-community/odata-v2-adapter](https://github.com/cap-js-community/odata-v2-adapter).


Updates `@sap/cds` from 7.7.3 to 7.8.1

Updates `@cap-js-community/odata-v2-adapter` from 1.12.7 to 1.12.8
- [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.12.7...v1.12.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 13:14:02 +00:00
dependabot[bot]
be5696b14e Bump the development-dependencies group with 3 updates (#710)
Bumps the development-dependencies group with 3 updates: [@sap/eslint-plugin-cds](https://cap.cloud.sap/), [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) and [typescript](https://github.com/Microsoft/TypeScript).


Updates `@sap/eslint-plugin-cds` from 2.6.7 to 2.7.0

Updates `@types/node` from 20.12.5 to 20.12.7
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `typescript` from 5.4.4 to 5.4.5
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.4.4...v5.4.5)

---
updated-dependencies:
- dependency-name: "@sap/eslint-plugin-cds"
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 15:12:36 +02:00
19 changed files with 753 additions and 100 deletions

43
bookstore/mta.yaml Normal file
View File

@@ -0,0 +1,43 @@
_schema-version: '3.1'
ID: capire.bookstore
version: 1.0.0
description: "A simple CAP project."
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm ci
- npx cds build --production
modules:
- name: bookstore-srv
type: nodejs
path: gen/srv
parameters:
buildpack: nodejs_buildpack
readiness-health-check-type: http
readiness-health-check-http-endpoint: /health
build-parameters:
builder: npm
provides:
- name: srv-api # required by consumers of CAP services (e.g. approuter)
properties:
srv-url: ${default-url}
requires:
- name: bookstore-destination
- name: bookstore-messaging
- name: samples-db
resources:
- name: bookstore-destination
type: org.cloudfoundry.managed-service
parameters:
service: destination
service-plan: lite
- name: bookstore-messaging
type: org.cloudfoundry.managed-service
parameters:
service: enterprise-messaging
service-plan: default
path: ./event-mesh.json

View File

@@ -21,14 +21,32 @@
"model": "@capire/orders"
},
"messaging": {
"[development]": { "kind": "file-based-messaging" },
"[hybrid]": { "kind": "enterprise-messaging-shared" },
"[production]": { "kind": "enterprise-messaging" }
"[development]": {
"kind": "file-based-messaging"
},
"[hybrid]": {
"kind": "enterprise-messaging-shared"
},
"[production]": {
"kind": "enterprise-messaging"
}
},
"db": {
"kind": "sql"
"db": { "kind": "sql" },
"[multimodule]": {
"db": {
"kind": "sqlite",
"impl": "@cap-js/sqlite",
"credentials": {
"url": "../db.sqlite"
}
}
}
},
"log": { "service": true }
"log": {
"service": true
}
},
"devDependencies": {
"@sap/cds-dk": "^7"
}
}

5
db/sqlite/index.cds Normal file
View File

@@ -0,0 +1,5 @@
using from '@capire/bookstore';
using from '@capire/common';
using from '@capire/orders';
using from '@capire/reviews';
using from '@capire/fiori';

View File

@@ -1,27 +0,0 @@
const globals = require("globals");
const js = require('@eslint/js');
const cds = require('@sap/eslint-plugin-cds');
module.exports = [
cds.configs.recommended,
{
"files": ["**/*.js"],
...js.configs.recommended,
"languageOptions": {
"globals": {
...globals.browser,
...globals.node,
...globals.jest,
...globals.mocha,
"es2022": true
},
},
"rules": {
...js.configs.recommended.rules,
"no-console": "off",
"require-atomic-updates": "off",
"require-await": "warn",
"no-unused-vars": ["warn", { "argsIgnorePattern": "_" }]
}
}
]

View File

@@ -0,0 +1,12 @@
{
"name": "approuter",
"dependencies": {
"@sap/approuter": "^16.0.0"
},
"engines": {
"node": "^20.0.0"
},
"scripts": {
"start": "node node_modules/@sap/approuter/approuter.js"
}
}

View File

@@ -0,0 +1,22 @@
{
"welcomeFile": "app/index.html",
"routes": [
{
"source": "^/app/(.*)$",
"target": "$1",
"localDir": ".",
"cacheControl": "no-cache, no-store, must-revalidate"
},
{
"source": "^/appconfig/",
"localDir": ".",
"cacheControl": "no-cache, no-store, must-revalidate"
},
{
"source": "^/(.*)$",
"target": "$1",
"destination": "srv-api",
"csrfProtection": true
}
]
}

View File

@@ -1 +1,2 @@
using from './db/common';
using from './app/services';

69
fiori/mta.yaml Normal file
View File

@@ -0,0 +1,69 @@
_schema-version: '3.1'
ID: capire.fiori
version: 1.0.0
description: "A simple CAP project."
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm ci
- npx cds build --production
modules:
- name: fiori-srv
type: nodejs
path: gen/srv
parameters:
buildpack: nodejs_buildpack
readiness-health-check-type: http
readiness-health-check-http-endpoint: /health
build-parameters:
builder: npm
provides:
- name: srv-api # required by consumers of CAP services (e.g. approuter)
properties:
srv-url: ${default-url}
requires:
- name: fiori-auth
- name: fiori-destination
- name: fiori-messaging
- name: samples-db
- name: fiori
type: approuter.nodejs
path: app/router
parameters:
keep-existing-routes: true
disk-quota: 256M
memory: 256M
requires:
- name: srv-api
group: destinations
properties:
name: srv-api # must be used in xs-app.json as well
url: ~{srv-url}
forwardAuthToken: true
- name: fiori-auth
resources:
- name: fiori-auth
type: org.cloudfoundry.managed-service
parameters:
service: xsuaa
service-plan: application
path: ./xs-security.json
config:
xsappname: fiori-${org}-${space}
tenant-mode: dedicated
- name: fiori-destination
type: org.cloudfoundry.managed-service
parameters:
service: destination
service-plan: lite
- name: fiori-messaging
type: org.cloudfoundry.managed-service
parameters:
service: enterprise-messaging
service-plan: default
path: ./event-mesh.json

View File

@@ -38,6 +38,15 @@
"db": {
"kind": "sql"
},
"[multimodule]": {
"db": {
"kind": "sqlite",
"impl": "@cap-js/sqlite",
"credentials": {
"url": "../db.sqlite"
}
}
},
"db-ext": {
"[development]": {
"model": "db/sqlite"

22
fiori/xs-security.json Normal file
View File

@@ -0,0 +1,22 @@
{
"scopes": [
{
"name": "$XSAPPNAME.emcallback",
"description": "Enterprise-Messaging Callback Access",
"grant-as-authority-to-apps": [
"$XSSERVICENAME(fiori-messaging)"
]
},
{
"name": "$XSAPPNAME.emmanagement",
"description": "Enterprise-Messaging Management Access"
}
],
"attributes": [],
"role-templates": [],
"authorities-inheritance": false,
"authorities": [
"$XSAPPNAME.emmanagement",
"$XSAPPNAME.mtcallback"
]
}

27
mta.yaml Normal file
View File

@@ -0,0 +1,27 @@
_schema-version: '3.1'
ID: capire.samples
version: 2.0.0
description: "A monorepo with several samples for CAP."
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm ci
- npx cds build --production --ws
modules:
- name: samples-db-deployer
type: hdb
path: gen/db
parameters:
buildpack: nodejs_buildpack
requires:
- name: samples-db
resources:
- name: samples-db
type: com.sap.xs.hdi-container
parameters:
service: hana
service-plan: hdi-shared

View File

@@ -0,0 +1,12 @@
{
"name": "approuter",
"dependencies": {
"@sap/approuter": "^16.0.0"
},
"engines": {
"node": "^20.0.0"
},
"scripts": {
"start": "node node_modules/@sap/approuter/approuter.js"
}
}

View File

@@ -0,0 +1,22 @@
{
"welcomeFile": "app/index.html",
"routes": [
{
"source": "^/app/(.*)$",
"target": "$1",
"localDir": ".",
"cacheControl": "no-cache, no-store, must-revalidate"
},
{
"source": "^/appconfig/",
"localDir": ".",
"cacheControl": "no-cache, no-store, must-revalidate"
},
{
"source": "^/(.*)$",
"target": "$1",
"destination": "srv-api",
"csrfProtection": true
}
]
}

55
orders/mta.yaml Normal file
View File

@@ -0,0 +1,55 @@
_schema-version: '3.1'
ID: capire.orders
version: 1.0.0
description: "A simple CAP project."
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm ci
- npx cds build --production
modules:
- name: orders-srv
type: nodejs
path: gen/srv
parameters:
buildpack: nodejs_buildpack
readiness-health-check-type: http
readiness-health-check-http-endpoint: /health
build-parameters:
builder: npm
provides:
- name: srv-api # required by consumers of CAP services (e.g. approuter)
properties:
srv-url: ${default-url}
requires:
- name: orders-auth
- name: orders
type: approuter.nodejs
path: app/router
parameters:
keep-existing-routes: true
disk-quota: 256M
memory: 256M
requires:
- name: srv-api
group: destinations
properties:
name: srv-api # must be used in xs-app.json as well
url: ~{srv-url}
forwardAuthToken: true
- name: orders-auth
resources:
- name: orders-auth
type: org.cloudfoundry.managed-service
parameters:
service: xsuaa
service-plan: application
path: ./xs-security.json
config:
xsappname: orders-${org}-${space}
tenant-mode: dedicated

View File

@@ -4,5 +4,19 @@
"dependencies": {
"@capire/common": "*",
"@sap/cds": ">=5"
},
"cds": {
"requires": {
"db": { "kind": "sql" },
"[multimodule]": {
"db": {
"kind": "sqlite",
"impl": "@cap-js/sqlite",
"credentials": {
"url": "../db.sqlite"
}
}
}
}
}
}

5
orders/xs-security.json Normal file
View File

@@ -0,0 +1,5 @@
{
"scopes": [],
"attributes": [],
"role-templates": []
}

447
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -5,6 +5,7 @@
"repository": "https://github.com/sap-samples/cloud-cap-samples.git",
"author": "daniel.hutzel@sap.com",
"dependencies": {
"@sap-cloud-sdk/resilience": "^3.14.0",
"@sap/cds": ">=7"
},
"workspaces": [
@@ -21,12 +22,12 @@
],
"devDependencies": {
"@cap-js/sqlite": "^1",
"@sap/eslint-plugin-cds": "^3",
"@sap/cds-dk": "^7",
"@sap/eslint-plugin-cds": "^2.6.1",
"axios": "^1",
"chai": "^4.3.4",
"chai-as-promised": "^7.1.1",
"chai-subset": "^1.6.0",
"eslint": "^9",
"semver": "^7"
},
"scripts": {
@@ -52,6 +53,16 @@
"parallel": true,
"timeout": 6666
},
"cds": {
"requires": {
"db": {
"kind": "sql",
"[development]": {
"model": "db/sqlite"
}
}
}
},
"license": "SEE LICENSE IN LICENSE",
"private": true
}

View File

@@ -17,7 +17,17 @@
"[hybrid]": { "kind": "enterprise-messaging-shared" },
"[production]": { "kind": "enterprise-messaging" }
},
"db": { "kind": "sql" }
"db": { "kind": "sql" },
"[multimodule]": {
"db": {
"kind": "sqlite",
"impl": "@cap-js/sqlite",
"credentials": {
"url": "../db.sqlite"
}
}
}
}
}
}