diff --git a/src/CaosDB.jl b/src/CaosDB.jl index b81fd4669dd3ea346f1819bf7bba98125ad3f03d..a3812ea254853e72e2276704a1c0174e5ff6c266 100644 --- a/src/CaosDB.jl +++ b/src/CaosDB.jl @@ -75,7 +75,9 @@ export append_parent, set_datatype, set_unit, set_value, - set_importance + set_importance, + set_local_path, + set_remote_path # helper functions export has_errors, has_warnings @@ -83,6 +85,10 @@ export has_errors, has_warnings # Exports from module Transaction export create_transaction, add_retrieve_by_id, + 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/Entity.jl b/src/Entity.jl index 119729b789b6eca53d4ea0414b2c8f67d022d95c..6fa2c7ec8e24cc0622f3f0265e74b032a04d623e 100644 --- a/src/Entity.jl +++ b/src/Entity.jl @@ -62,7 +62,9 @@ export append_parent, set_datatype, set_unit, set_value, - set_importance + set_importance, + set_local_path, + set_remote_path # helper functions export has_errors, has_warnings @@ -1733,6 +1735,39 @@ function set_importance(property::Ref{_Property}, importance::AbstractString) CaosDB.Exceptions.evaluate_return_code(err_code) end +""" + function set_local_path(entity::Ref{_Entity}, path::AbstractString) + +Set the local path of the given `entity` object. +""" +function set_local_path(entity::Ref{_Entity}, path::AbstractString) + err_code = ccall( + (:caosdb_entity_entity_set_local_path, CaosDB.library_name), + Cint, + (Ref{_Entity}, Cstring), + entity, + path, + ) + + CaosDB.Exceptions.evaluate_return_code(err_code) +end + +""" + function set_remote_path(entity::Ref{_Entity}, path::AbstractString) + +Set the remote file path of the given `entity` object. +""" +function set_remote_path(entity::Ref{_Entity}, path::AbstractString) + err_code = ccall( + (:caosdb_entity_entity_set_file_path, CaosDB.library_name), + Cint, + (Ref{_Entity}, Cstring), + entity, + path, + ) + + CaosDB.Exceptions.evaluate_return_code(err_code) +end """ function append_parent(entity::Ref{_Entity}, parent::Ref{_Parent}) diff --git a/src/Transaction.jl b/src/Transaction.jl index 2308048d9c5f5955d0ba933cb061dc9561c6d702..a84588c412a2b0cc1a324e7e1169fb1a3e05f7a6 100644 --- a/src/Transaction.jl +++ b/src/Transaction.jl @@ -26,6 +26,10 @@ module Transaction export create_transaction, add_retrieve_by_id, add_query, + add_insert_entity, + add_update_entity, + add_delete_by_id, + add_retrieve_and_download_file_by_id, execute, get_result_set, get_count_result, @@ -137,6 +141,76 @@ function add_retrieve_by_id(transaction::Ref{_Transaction}, id::AbstractString) CaosDB.Exceptions.evaluate_return_code(err_code) end +""" + function add_insert_entity(transaction::Ref{_Transaction}, entity::Ref{_CaosDB.Entity.Entity}) + +Add a sub-request to insert a single entity to the given `transaction`. + +!!! info + + This does not execute the transaction. +""" +function add_insert_entity( + transaction::Ref{_Transaction}, + entity::Ref{CaosDB.Entity._Entity}, +) + + err_code = ccall( + (:caosdb_transaction_transaction_insert_entity, CaosDB.library_name), + Cint, + (Ref{_Transaction}, Ref{CaosDB.Entity._Entity}), + transaction, + entity, + ) + + CaosDB.Exceptions.evaluate_return_code(err_code) +end +""" + function add_update_entity(transaction::Ref{_Transaction}, entity::Ref{_CaosDB.Entity.Entity}) + +Add a sub-request to update a single entity to the given `transaction`. + +!!! info + + This does not execute the transaction. +""" +function add_update_entity( + transaction::Ref{_Transaction}, + entity::Ref{CaosDB.Entity._Entity}, +) + + err_code = ccall( + (:caosdb_transaction_transaction_update_entity, CaosDB.library_name), + Cint, + (Ref{_Transaction}, Ref{CaosDB.Entity._Entity}), + transaction, + entity, + ) + + 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_delete_by_id(transaction::Ref{_Transaction}, id::AbstractString) + + err_code = ccall( + (:caosdb_transaction_transaction_delete_by_id, CaosDB.library_name), + Cint, + (Ref{_Transaction}, Cstring), + transaction, + id, + ) + + CaosDB.Exceptions.evaluate_return_code(err_code) +end + """ function add_retrieve_by_id( transaction::Ref{_Transaction}, @@ -168,6 +242,40 @@ function add_retrieve_by_id( CaosDB.Exceptions.evaluate_return_code(err_code) end +""" + function add_retrieve_and_download_file_by_id( + transaction::Ref{_Transaction}, + id::AbstractString, + path::AbstractString, + ) + +Add a sub-request to retrieve and download a single entity (File) 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)