Use "db" service to avoid double call of service handlers

This commit is contained in:
Uwe Klinger
2021-05-19 11:37:04 +02:00
parent 48ee934b00
commit 5b4210bb38
2 changed files with 9 additions and 5 deletions

View File

@@ -36,7 +36,7 @@ class RemoteHandler {
} }
serviceFor(entityName) { serviceFor(entityName) {
return this.remoteEntities[entityName] || this.service; return this.remoteEntities[entityName] || cds.db;
} }
/** /**
@@ -75,6 +75,7 @@ class RemoteHandler {
const targetService = this.serviceFor(target.name); const targetService = this.serviceFor(target.name);
// Select target // Select target
// REVISIT: const targetResult = await targetService.read(target.name).where({ [targetKeyFieldName]: ids }).columns(expandColumns);
const targetQuery = SELECT.from(target.name) const targetQuery = SELECT.from(target.name)
.where({ [targetKeyFieldName]: ids }) .where({ [targetKeyFieldName]: ids })
.columns(expandColumns); .columns(expandColumns);
@@ -166,6 +167,7 @@ class RemoteHandler {
const entry = await sourceService.run(selectEntry); const entry = await sourceService.run(selectEntry);
// REVISIT: How to call service datasource w/o handlers // REVISIT: How to call service datasource w/o handlers
// REVISIT: const result = await targetService.read(target).columns(req.query.SELECT.columns).where({ [targetKeyFieldName]: entry[keyFieldName] });
// TODO: Seems not to respect filter for targetkeyFieldName // TODO: Seems not to respect filter for targetkeyFieldName
const selectTarget = SELECT(req.query.SELECT.columns) const selectTarget = SELECT(req.query.SELECT.columns)
.from(target) .from(target)
@@ -197,7 +199,7 @@ class RemoteHandler {
} }
isRemote(entityName) { isRemote(entityName) {
return this.serviceFor(entityName) !== this.service; return this.serviceFor(entityName) !== cds.db;
} }
isSeparated(entityNameA, entityNameB) { isSeparated(entityNameA, entityNameB) {

View File

@@ -228,8 +228,9 @@ describe("Notes", () => {
}); });
}); });
// TODO: Seems not to respect filter for targetkeyFieldName // TODO: Seems not to respect filter for targetKeyFieldName
/* /*
it.only("get supplier via navigation", async () => { it.only("get supplier via navigation", async () => {
const { status, data } = await GET("/notes/Notes(545A3CF9-84CF-46C8-93DC-E29F0F2BC6BE)/supplier"); const { status, data } = await GET("/notes/Notes(545A3CF9-84CF-46C8-93DC-E29F0F2BC6BE)/supplier");
expect({ status, data }).to.containSubset({ expect({ status, data }).to.containSubset({
@@ -237,7 +238,8 @@ describe("Notes", () => {
data: envelope("Suppliers", NotesExpandSuppliers[0].supplier ) data: envelope("Suppliers", NotesExpandSuppliers[0].supplier )
}); });
}); });
*/ */
after(() => mockServer.close()); after(() => mockServer.close());
}); });