From 56360e5a6132a1ca8aca42e7a7adb208afffa4f0 Mon Sep 17 00:00:00 2001 From: fspreck <f.spreckelsen@indiscale.com> Date: Fri, 3 Dec 2021 18:30:04 +0100 Subject: [PATCH] DRAFT: Begin TransactionService class --- generate_sources.sh | 2 +- src/TransactionService.js | 70 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/TransactionService.js diff --git a/generate_sources.sh b/generate_sources.sh index e7188fe..5898019 100755 --- a/generate_sources.sh +++ b/generate_sources.sh @@ -17,7 +17,7 @@ echo "PROTO_DIR: $PROTO_DIR" _OUT_DIR=$SRC_DIR/generated/ mkdir -p $_OUT_DIR -PROTO_MODULE=info/v1 +PROTO_MODULE=entity/v1 echo "generate javascript module proto/caosdb/$PROTO_MODULE" PROTO_FILE=${PROTO_DIR}/caosdb/${PROTO_MODULE}/main.proto diff --git a/src/TransactionService.js b/src/TransactionService.js new file mode 100644 index 0000000..f280795 --- /dev/null +++ b/src/TransactionService.js @@ -0,0 +1,70 @@ +/* + * ** header v3.0 + * This file is a part of the CaosDB Project. + * + * Copyright (C) 2021 IndiScale GmbH <info@indiscale.com> + * Copyright (C) 2021 Florian Spreckelsen <f.spreckelsen@indiscale.com> + * + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU Affero General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + * ** end header + */ +import { + api +} from "./EntityApi"; + +export class TransactionService { + + constructor(uri) { + this.uri = uri || "/api"; + } + + _PrepareTransaction(retrieveRequest) { + + 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); + + return (res_cb, err_cb) => { + client.multiTransaction(request, headers, (error_response, response) => { + if (error_response) { + err_cb(error_response); + } + res_cb(response); + }); + }; + } + + _CreateRetrieveRequest(id) { + + var retrieve_request = new api.v1.RetrieveRequest(); + retrieve_request.setId(id); + retrieve_request.setRegisterFileDownload(false); + + return retrieve_request; + } + + _CreateQueryRequest(query_string) { + + var query = new api.v1.Query(); + query.setQuery(query_string); + var query_request = new api.v1.RetrieveRequest(); + query_request.setQuery(query); + query_request.setRegisterFileDownload(false); + + return query_request; + } +} -- GitLab