@amag-ch/sap_cap_common_runtime

1.16.2 • Public • Published

sap_cap_common_runtime

npm version npm downloads

NodeJS library to add additional cds runtime features

Table of Contents

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

Configuration

Features

{
    "cds": {
        "features": {
            "assert_integrity": "db"
        }        
    }
}

Localization

{
    "cds": {
        "i18n": {
            "default_language": "de",
            "languages": [
                "en",
                "de",
                "fr",
                "it"
            ],
            "for_sqlite": [
                "en",
                "de",
                "fr",
                "it"
            ],
            "for_sql": [
                "en",
                "de",
                "fr",
                "it"
            ]
        }
    } 
}

Logging

{
    "cds": {
        "log": {
            "levels": {
                "odata": "warn",
                "rest": "warn",
                "[development]": {
                    "odata": "info",
                    "rest": "info",
                    "auth": "debug"
                }
            }
        }
    } 
}

Authentication

{
    "cds": {
        "requires": {
            "kinds": {
                "mocked-auth": {
                    "users": {
                        "system-user": {
                            "roles": [
                                "system-user"
                            ]
                        }
                    }
                }
            }
        }
    }
}

HANA Configuration

{
    "cds": {
        "requires": {
            "kinds": {
                "hana": {
                    "deploy-format": "hdbtable",
                    "pool": {
                        "acquireTimeoutMillis": 60000
                    }
                }
            }
        }
    }
}

Installing

Using npm:

$ npm install @amag-ch/sap_cap_common_runtime

Using yarn:

$ yarn add @amag-ch/sap_cap_common_runtime

Implementation

Custom express endpoints with parameters

@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.

Pseudos in db statements

    await cds.create(Books, { ID: '$uuid', name: 'Test' })
    await cds.update(Books).set({ errorAt: '$now', responsable: '$user' })

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @amag-ch/sap_cap_common_runtime

Weekly Downloads

38

Version

1.16.2

License

MIT

Unpacked Size

16.9 kB

Total Files

18

Last publish

Collaborators

  • thju-amag-ch
  • integration-amag-ch