From 1cf223b6c65fa691fd512221d5c0b6a95d2c6ce4 Mon Sep 17 00:00:00 2001
From: florian <f.spreckelsen@inidscale.com>
Date: Wed, 11 Aug 2021 17:10:02 +0200
Subject: [PATCH] DRAFT: Move Transaction module to separate file

---
 src/CaosDB.jl      |  2 +-
 src/Transaction.jl | 53 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 src/Transaction.jl

diff --git a/src/CaosDB.jl b/src/CaosDB.jl
index 2c7bcd3..5cc7367 100644
--- a/src/CaosDB.jl
+++ b/src/CaosDB.jl
@@ -216,6 +216,6 @@ include("Connection.jl")
 
 module Entity end
 
-module Transaction end
+include("Transaction.jl")
 
 end # CaosDB
diff --git a/src/Transaction.jl b/src/Transaction.jl
new file mode 100644
index 0000000..00ceabc
--- /dev/null
+++ b/src/Transaction.jl
@@ -0,0 +1,53 @@
+# ** 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
+#
+
+module Transaction
+
+using CaosDB
+
+"""
+Struct containing a pointer to the wrapped cpp transaction
+object. Meant for internal use; call
+`CaosDB.Transaction.create_transaction` to create a transaction
+object.
+"""
+mutable struct _Transaction
+    wrapped_transaction::Ptr{Cvoid}
+    function _Transaction(managed_by_julia::Bool = false)
+        trans = new()
+        if managed_by_julia
+            function f(t)
+                ccall(
+                    (:caosdb_transaction_delete_transaction, CaosDB.library_name),
+                    Cint,
+                    (Ref{_Transaction},),
+                    Ref{_Transaction}(t),
+                )
+            end
+            finalizer(f, trans)
+        end
+        return trans
+    end
+end
+
+end # Transaction
-- 
GitLab