From b1987b1e36d1f259373cbf912c54b92f9f80e02f Mon Sep 17 00:00:00 2001 From: Thijs Cadier Date: Thu, 25 Jun 2015 22:14:25 +0200 Subject: [PATCH] Add Collection.get_name() --- src/client.rs | 3 ++- src/collection.rs | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/client.rs b/src/client.rs index 4756023..3f2b682 100644 --- a/src/client.rs +++ b/src/client.rs @@ -132,7 +132,8 @@ mod tests { for _ in 0..10 { let client = pool.pop(); pool.pop(); - client.get_collection("rust_test", "items"); + let collection = client.get_collection("rust_test", "items"); + assert_eq!("items", collection.get_name().to_mut()); } } diff --git a/src/collection.rs b/src/collection.rs index ad1bb2c..66f75c8 100644 --- a/src/collection.rs +++ b/src/collection.rs @@ -1,4 +1,6 @@ use std::ptr; +use std::ffi::CStr; +use std::borrow::Cow; use mongo_c_driver_wrapper::bindings; @@ -158,6 +160,13 @@ impl<'a> Collection<'a> { ) } + pub fn get_name(&self) -> Cow { + let cstr = unsafe { + CStr::from_ptr(bindings::mongoc_collection_get_name(self.inner)) + }; + String::from_utf8_lossy(cstr.to_bytes()) + } + pub fn insert_with_options( &'a self, insert_flags: &Flags, @@ -288,6 +297,8 @@ mod tests { let mut collection = client.get_collection("rust_driver_test", "items"); collection.drop().unwrap_or(()); + assert_eq!("items", collection.get_name().to_mut()); + let mut document = bson::Document::new(); document.insert("key_1".to_string(), bson::Bson::String("Value 1".to_string())); document.insert("key_2".to_string(), bson::Bson::String("Value 2".to_string()));