From 3daa6ee5df6d7e8c91b26243ee6b8e6cccbf04cd Mon Sep 17 00:00:00 2001
From: florian <f.spreckelsen@inidscale.com>
Date: Wed, 11 Aug 2021 17:23:46 +0200
Subject: [PATCH] ENH: Implement create_transaction

---
 src/Transaction.jl | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/src/Transaction.jl b/src/Transaction.jl
index 00ceabc..a3a1549 100644
--- a/src/Transaction.jl
+++ b/src/Transaction.jl
@@ -23,6 +23,8 @@
 
 module Transaction
 
+export create_transaction
+
 using CaosDB
 
 """
@@ -50,4 +52,38 @@ mutable struct _Transaction
     end
 end
 
+"""
+    create_transaction(name::AbstractString = "default")
+
+Return a transaction created with the connection of the given name. If
+none is given, the defult connection is used.
+"""
+function create_transaction(name::AbstractString = "default")
+    connection = CaosDB.Connection.get_connection(name)
+
+    return create_transaction(connection)
+end
+
+"""
+    function create_transaction(connection::Ref{CaosDB.Connection._Connection})
+
+Return a transactioncreated with the given connection object.
+"""
+function create_transaction(connection::Ref{CaosDB.Connection._Connection})
+
+    transaction = Ref{_Transaction}(_Transaction(true))
+
+    err_code = ccall(
+        (:caosdb_connection_connection_create_transaction, CaosDB.library_name),
+        Cint,
+        (Ref{CaosDB.Connection._Connection}, Ref{_Transaction}),
+        connection,
+        transaction,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+
+    return transaction
+end
+
 end # Transaction
-- 
GitLab