UNPKG

@sap/cds

Version:

SAP Cloud Application Programming Model - CDS for Node.js

95 lines (89 loc) 2.62 kB
module.exports = function (conf) { const _ = Object.defineProperties (conf, { 'log-level': { get() { return _.log.levels.cli }, set(x) { _.log.levels.cli = x }, }, data: {value:{ get model(){ const db = _.requires.db; if (!db) return undefined return db.model }, set model(v){ const db = _.requires.db || (_.requires.db={}) db.model = v _.folders.db = v }, get driver(){ const db = _.requires.db; if (!db) return undefined return db.kind }, set driver(v){ const db = _.requires.db || (_.requires.db={}) db.kind = v }, get url(){ const db = _.requires.db; if (!db) return undefined const cred = db.credentials; if (!cred) return undefined return cred.url || cred.database }, set url(v) { const isUrl = /.+:\/\/.+/.test(v) // e.g. 'foo://bar' const db = _.requires.db || (_.requires.db={}) const cred = db.credentials || (db.credentials={}) if (isUrl) { cred.url = v // HANA } else { cred.database = v // sqlite } }, get database(){ const db = _.requires.db; if (!db) return undefined const cred = db.credentials; if (!cred) return undefined return cred.database }, set database(v){ const db = _.requires.db || (_.requires.db={}) const cred = db.credentials || (db.credentials={}) cred.database = v }, get sql_mapping(){ return _.sql.names }, set sql_mapping(v){ _.sql.names = v }, }}, service: {value:{ get model() { return _.folders.srv }, set model(v){ _.folders.srv = v }, get odata(){ return _.odata }, set odata(v){ _.odata = v }, }}, sql_mapping: { get() { return _.sql.names }, set(v) { _.sql.names = v }, }, deploy: {value:{ _compat: true, get models() { return Object.values (_.folders) .concat ([ 'schema', 'services' ]) } }} }) const _hana = Object.defineProperties(conf.hana, { syntax: { get() { const format = _hana['deploy-format'] return format === 'hdbtable' ? 'hdi' : format }, set(v) { _hana['deploy-format'] = (v === 'hdi' ? 'hdbtable' : v) } } }) Object.defineProperties (conf.features, { fiori_preview: { get: ()=> _.fiori.preview, set: (v) => { _.fiori.preview = v }, }, fiori_routes: { get: ()=> _.fiori.routes, set: (v) => { _.fiori.routes = v }, }, }) }