From 488ad49a3d9762f1c6550ec88b7583f8f944249a Mon Sep 17 00:00:00 2001 From: fspreck <f.spreckelsen@indiscale.com> Date: Fri, 28 Jan 2022 15:18:10 +0100 Subject: [PATCH] ENH: Allow retrieval of multiple entities by id --- src/TransactionService.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/TransactionService.js b/src/TransactionService.js index cfe1328..53e5cd5 100644 --- a/src/TransactionService.js +++ b/src/TransactionService.js @@ -27,13 +27,19 @@ export class TransactionService { this.uri = uri || "/api"; } - _PrepareTransaction(retrieveRequest) { + _PrepareTransaction(retrieveRequests) { + if (!(Array.isArray(retrieveRequests))) { + retrieveRequests = [retrieveRequests]; + } const client = new api.v1.EntityTransactionServiceClient(this.uri, null, null); - var transactionRequest = new api.v1.TransactionRequest(); - transactionRequest.setRetrieveRequest(retrieveRequest); var request = new api.v1.MultiTransactionRequest(); - request.addRequests(transactionRequest); + var transactionRequest; + for (let retrieveRequest of retrieveRequests) { + transactionRequest = new api.v1.TransactionRequest(); + transactionRequest.setRetrieveRequest(retrieveRequest); + request.addRequests(transactionRequest); + } const headers = {}; return (res_cb, err_cb) => { @@ -66,9 +72,12 @@ export class TransactionService { return query_request; } - async retrieve(id) { - const retrieveRequest = this._CreateRetrieveRequest(id); - return new Promise(this._PrepareTransaction(retrieveRequest)); + async retrieve(ids) { + if (!(Array.isArray(ids))) { + ids = [ids] + } + const retrieveRequests = ids.map(id => this._CreateRetrieveRequest(id)); + return new Promise(this._PrepareTransaction(retrieveRequests)); } async executeQuery(query) { -- GitLab