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