From e33768e5cee4bc9af639f320207023637248ab0f Mon Sep 17 00:00:00 2001 From: Stephen Clayton Date: Wed, 29 Aug 2018 23:06:39 +0200 Subject: [PATCH] add method to return current schema to android bindings --- Cargo.toml | 2 +- ffi/src/lib.rs | 10 ++++++++++ .../library/src/main/java/org/mozilla/mentat/JNA.java | 1 + .../src/main/java/org/mozilla/mentat/Mentat.java | 9 +++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4b3a5e79e..aae941627 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ authors = [ "Thom Chiovoloni ", ] name = "mentat" -version = "0.11.1" +version = "0.11.2" build = "build/version.rs" [features] diff --git a/ffi/src/lib.rs b/ffi/src/lib.rs index 5d2c532ee..6e54c2f98 100644 --- a/ffi/src/lib.rs +++ b/ffi/src/lib.rs @@ -1978,6 +1978,16 @@ pub unsafe extern "C" fn store_entid_for_attribute(store: *mut Store, attr: *con current_schema.get_entid(&kw).expect("Unable to find entid for invalid attribute").into() } +/// Returns the current schema as an edn C `String`. +/// +#[no_mangle] +pub unsafe extern "C" fn store_current_schema(store: *mut Store) -> *mut c_char { + assert_not_null!(store); + let store = &mut *store; + let value = store.conn().current_schema().to_edn_value().to_string(); + string_to_c_char(value.clone()) +} + /// Returns the value at the provided `index` as a [TransactionChange](TransactionChange) . /// /// # Panics diff --git a/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/JNA.java b/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/JNA.java index 44ac12c2f..624a72786 100644 --- a/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/JNA.java +++ b/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/JNA.java @@ -126,6 +126,7 @@ class EntityBuilder extends PointerType {} void store_register_observer(Store store, String key, Pointer attributes, int len, TxObserverCallback callback); void store_unregister_observer(Store store, String key); long store_entid_for_attribute(Store store, String attr); + Pointer store_current_schema(Store store); // Query Building QueryBuilder store_query(Store store, String query); diff --git a/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/Mentat.java b/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/Mentat.java index 90e7c4fc0..8ab1dbbe6 100644 --- a/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/Mentat.java +++ b/sdks/android/Mentat/library/src/main/java/org/mozilla/mentat/Mentat.java @@ -107,6 +107,15 @@ public long entIdForAttribute(String attribute) { return JNA.INSTANCE.store_entid_for_attribute(this.validPointer(), attribute); } + /** + * Get the current schema. + * @return An EDN string of the current schema. + */ + public String currentSchema() { + return getAndConsumeMentatString( + JNA.INSTANCE.store_current_schema(this.validPointer())); + } + /** * Start a query. * @param query The string represeting the the query to be executed.