NodeJS library to add additional cds runtime features
- Register /health endpoint for monitoring (cds < 7.8.0)
- Add middleware to use user id from http header x-sender in case of system user
- Provides ApplicationService with extensions
- Default features configuration
- Default i18n configuration
- Default log configuration
- Default auth configuration
- Default hana configuration
- Add possiblity of usage of pseudos in db statements ($now, $user, $uuid)
- Fix handling calculated fields in case of draft activate
- Fix handling calculated boolean fields in case of draft read
{
"cds": {
"features": {
"assert_integrity": "db"
}
}
}
{
"cds": {
"i18n": {
"default_language": "de",
"languages": [
"en",
"de",
"fr",
"it"
],
"for_sqlite": [
"en",
"de",
"fr",
"it"
],
"for_sql": [
"en",
"de",
"fr",
"it"
]
}
}
}
{
"cds": {
"log": {
"levels": {
"odata": "warn",
"rest": "warn",
"[development]": {
"odata": "info",
"rest": "info",
"auth": "debug"
}
}
}
}
}
{
"cds": {
"requires": {
"kinds": {
"mocked-auth": {
"users": {
"system-user": {
"roles": [
"system-user"
]
}
}
}
}
}
}
}
{
"cds": {
"requires": {
"kinds": {
"hana": {
"deploy-format": "hdbtable",
"pool": {
"acquireTimeoutMillis": 60000
}
}
}
}
}
}
Using npm:
$ npm install @amag-ch/sap_cap_common_runtime
Using yarn:
$ yarn add @amag-ch/sap_cap_common_runtime
@protocol : ['odata', 'rest']
service APIService {
function checkAvailability(partnerId : String) returns {
valid: Boolean
}
}
const { ApplicationService } = require('@amag-ch/sap_cap_common_runtime')
module.exports = class APIService extends ApplicationService {
async init() {
this.on('/partners/:partnerId/availability/check', 'checkAvailability')
this.on('checkAvailability', async (req) => {
return {
valid: !!req.data.partnerId
}
})
return super.init()
}
}
// Standard call over rest adapter
GET http://localhost:4004/rest/api/checkAvailability(partnerId='123456789')
// Same call, but with custom route (/partners/:partnerId/availability/check)
GET http://localhost:4004/rest/api/partner/123456789/availability/check
// Standard call over odata v4 adapter
GET http://localhost:4004/odata/v4/api/checkAvailability(partnerId='123456789')
// Same call, but with custom route (/partners/:partnerId/availability/check)
GET http://localhost:4004/odata/v4/api/partner/123456789/availability/check
The own on handler only reacts, if path starts with / and the second parameter is a string. Otherwise it will be forwarded to cds standard implementation.
await cds.create(Books, { ID: '$uuid', name: 'Test' })
await cds.update(Books).set({ errorAt: '$now', responsable: '$user' })