From 010d376a2be3fdf836f09b8b3ae7f221a03c988f Mon Sep 17 00:00:00 2001
From: Alexander Kreft <akreft@trineo.org>
Date: Thu, 26 Aug 2021 08:44:42 +0000
Subject: [PATCH] ENH: Add retrieve_and_download_file_by_id

---
 src/CaosDB.jl      |  1 +
 src/Transaction.jl | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/src/CaosDB.jl b/src/CaosDB.jl
index 726f01c..0409f4d 100644
--- a/src/CaosDB.jl
+++ b/src/CaosDB.jl
@@ -86,6 +86,7 @@ export create_transaction,
     add_insert_entity,
     add_update_entity,
     add_delete_by_id,
+    add_retrieve_and_download_file_by_id,
     add_query,
     execute,
     get_result_set,
diff --git a/src/Transaction.jl b/src/Transaction.jl
index 80bf3df..5e33578 100644
--- a/src/Transaction.jl
+++ b/src/Transaction.jl
@@ -29,6 +29,7 @@ export create_transaction,
     add_insert_entity,
     add_update_entity,
     add_delete_by_id,
+    add_retrieve_and_download_file_by_id,
     execute,
     get_result_set,
     get_count_result,
@@ -235,6 +236,29 @@ function add_retrieve_by_id(
     CaosDB.Exceptions.evaluate_return_code(err_code)
 end
 
+"""
+    function add_delete_by_id(transaction::Ref{_Transaction}, id::AbstractString)
+
+Add a sub-request to delete a single entity to the given `transaction`.
+
+!!! info
+
+    This does not execute the transaction.
+"""
+function add_retrieve_and_download_file_by_id(transaction::Ref{_Transaction}, id::AbstractString, path::AbstractString)
+
+    err_code = ccall(
+        (:caosdb_transaction_transaction_retrieve_and_download_file_by_id, CaosDB.library_name),
+        Cint,
+        (Ref{_Transaction}, Cstring, Cstring),
+        transaction,
+        id,
+        path,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
+
 
 """
     function add_query(transaction::Ref{_Transaction}, query::AbstractString)
-- 
GitLab