diff --git a/bookshop/server.js b/bookshop/server.js index aa8a7484..257b1b12 100644 --- a/bookshop/server.js +++ b/bookshop/server.js @@ -1,9 +1,9 @@ -const cds = require ('@sap/cds') const {resolve} = require ('path') const {promisify} = require('util') const readFile = promisify(require('fs').readFile) const swaggerUi = require ('swagger-ui-express') -const DEBUG = cds.debug('openapi') +const cds = require ('@sap/cds') +const trace = cds.debug('openapi') let app, host, docCache={} @@ -16,18 +16,18 @@ cds req.swaggerDoc = await toOpenApiDoc(service, host, docCache) next() }, swaggerUi.serve, swaggerUi.setup()) - addLink(service, apiPath) + addLinkToIndexHtml(service, apiPath) }) .on ('listening', ({server})=> { host = 'localhost:'+server.address().port }) async function toOpenApiDoc(service, host, cache) { if (!cache[service.name]) { const spec = await openApiFromFile(service, host) - if (spec) { + if (spec) { // pre-compiled spec file available? cache[service.name] = spec } else if (cds.compile.to.openapi) { // on-the-fly exporter available? - DEBUG && DEBUG ('Compiling Open API spec for', service.name) + trace && trace ('Compiling Open API spec for', service.name) cache[service.name] = cds.compile.to.openapi (service.model, { service: service.name, 'openapi:url': service.path, @@ -42,17 +42,17 @@ async function openApiFromFile(service) { const fileName = resolve(`srv/${service.name}.openapi3.json`) const file = await readFile(fileName).catch(()=>{/*no such file*/}) if (file) { - DEBUG && DEBUG ('Using Open API spec from file', fileName) + trace && trace ('Using Open API spec from file', fileName) return JSON.parse(file) } } -function addLink(service, apiPath) { - const link = (entity) => { - if (entity) return // don't want to provide link on entity level +function addLinkToIndexHtml(service, apiPath) { + const provider = (entity) => { + if (entity) return // avoid link on entity level, looks too messy return { href:apiPath, name:'Swagger UI', title:'Show in Swagger UI' } } - service.$linkProviders ? service.$linkProviders.push(link) : service.$linkProviders = [link] + service.$linkProviders ? service.$linkProviders.push(provider) : service.$linkProviders = [provider] } module.exports = cds.server