diff --git a/lib/setModel.js b/lib/setModel.js index da9ca0d..ab7b274 100644 --- a/lib/setModel.js +++ b/lib/setModel.js @@ -54,22 +54,18 @@ async function compileModel(path) { return exposed } - compiled.services - .flatMap(srv => srv.endpoints.map(endpoint => ({ srv, endpoint }))) - .map(({ srv, endpoint }) => { - const entities = _entities_in(srv) + compiled.services.forEach(srv => { + const entities = _entities_in(srv) + srv.exposedEntities = entities.map(e => srv.name + '.' + e) + srv.endpoints.forEach(endpoint => { for (const e of entities) { const path = endpoint.path + e.replace(/\./g, '_') const def = compiled.definitions[srv.name + '.' + e] def.endpoints ??= [] def.endpoints.push({ kind: endpoint.kind, path }) - // Add fully qualified entity names to each service as 'exposedEntities' } }) - - for (const service of compiled.services) { - service.exposedEntities = _entities_in(service, compiled) - } + }) const endTime = Date.now() const compileDuration = endTime - startTime diff --git a/tests/tools.test.js b/tests/tools.test.js index be281f7..0836a56 100644 --- a/tests/tools.test.js +++ b/tests/tools.test.js @@ -21,6 +21,8 @@ test.describe('tools', () => { assert.equal(result[0].name, 'AdminService', 'Should find Adminservice.Books service') assert.equal(result[0].endpoints[0].kind, 'odata', 'Should contain odata endpoint kind') assert.equal(result[0].endpoints[0].path, 'odata/v4/admin/', 'Should contain endpoint path') + assert(Array.isArray(result[0].exposedEntities), 'Should contain exposed entities') + assert.equal(result[0].exposedEntities[0], 'AdminService.Books', 'Should contain exposed entities') }) test('search_cds_definitions: fuzzy search for Books entity', async () => {