|  |  | @ -7,13 +7,21 @@ use super::collection::Collection; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | use super::Result; |  |  |  | use super::Result; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /// `BulkOperation` provides an abstraction for submitting multiple write operations as a single batch.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ///
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /// Create a `BulkOperation` by calling `create_bulk_operation` on a `Collection`. After adding all of
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /// the write operations using the functions on this struct, `execute` to execute the operation on
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | /// the server. After executing the bulk operation is consumed and cannot be used anymore.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | pub struct BulkOperation<'a> { |  |  |  | pub struct BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  |     _collection: &'a Collection<'a>, |  |  |  |     _collection: &'a Collection<'a>, | 
			
		
	
		
		
			
				
					
					|  |  |  |     inner:       *mut bindings::mongoc_bulk_operation_t |  |  |  |     inner:       *mut bindings::mongoc_bulk_operation_t | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | impl<'a> BulkOperation<'a> { |  |  |  | impl<'a>BulkOperation<'a> { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn new( |  |  |  |     /// Create a new bulk operation, only for internal usage.
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     #[doc(hidden)] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     pub unsafe fn new( | 
			
		
	
		
		
			
				
					
					|  |  |  |         collection: &'a Collection<'a>, |  |  |  |         collection: &'a Collection<'a>, | 
			
		
	
		
		
			
				
					
					|  |  |  |         inner:      *mut bindings::mongoc_bulk_operation_t |  |  |  |         inner:      *mut bindings::mongoc_bulk_operation_t | 
			
		
	
		
		
			
				
					
					|  |  |  |     ) -> BulkOperation<'a> { |  |  |  |     ) -> BulkOperation<'a> { | 
			
		
	
	
		
		
			
				
					|  |  | @ -26,8 +34,6 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// Queue an insert of a single document into a bulk operation.
 |  |  |  |     /// Queue an insert of a single document into a bulk operation.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// The insert is not performed until `execute` is called.
 |  |  |  |     /// The insert is not performed until `execute` is called.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_insert.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn insert( |  |  |  |     pub fn insert( | 
			
		
	
		
		
			
				
					
					|  |  |  |         &self, |  |  |  |         &self, | 
			
		
	
		
		
			
				
					
					|  |  |  |         document: &Document |  |  |  |         document: &Document | 
			
		
	
	
		
		
			
				
					|  |  | @ -42,10 +48,8 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  |         Ok(()) |  |  |  |         Ok(()) | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// Queue removal of al documents matching selector into a bulk operation.
 |  |  |  |     /// Queue removal of all documents matching the provided selector into a bulk operation.
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     /// The removal is not performed until `execute` is called.
 |  |  |  |     /// The removal is not performed until `execute` is called.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_remove.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn remove( |  |  |  |     pub fn remove( | 
			
		
	
		
		
			
				
					
					|  |  |  |         &self, |  |  |  |         &self, | 
			
		
	
		
		
			
				
					
					|  |  |  |         selector: &Document |  |  |  |         selector: &Document | 
			
		
	
	
		
		
			
				
					|  |  | @ -62,8 +66,6 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// Queue removal of a single document into a bulk operation.
 |  |  |  |     /// Queue removal of a single document into a bulk operation.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// The removal is not performed until `execute` is called.
 |  |  |  |     /// The removal is not performed until `execute` is called.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_remove_one.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn remove_one( |  |  |  |     pub fn remove_one( | 
			
		
	
		
		
			
				
					
					|  |  |  |         &self, |  |  |  |         &self, | 
			
		
	
		
		
			
				
					
					|  |  |  |         selector: &Document |  |  |  |         selector: &Document | 
			
		
	
	
		
		
			
				
					|  |  | @ -80,8 +82,6 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// Queue replacement of a single document into a bulk operation.
 |  |  |  |     /// Queue replacement of a single document into a bulk operation.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// The replacement is not performed until `execute` is called.
 |  |  |  |     /// The replacement is not performed until `execute` is called.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_remove_one.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn replace_one( |  |  |  |     pub fn replace_one( | 
			
		
	
		
		
			
				
					
					|  |  |  |         &self, |  |  |  |         &self, | 
			
		
	
		
		
			
				
					
					|  |  |  |         selector: &Document, |  |  |  |         selector: &Document, | 
			
		
	
	
		
		
			
				
					|  |  | @ -105,8 +105,6 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |     ///
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// TODO: document must only contain fields whose key starts
 |  |  |  |     /// TODO: document must only contain fields whose key starts
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// with $, these is no error handling for this.
 |  |  |  |     /// with $, these is no error handling for this.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_update_one.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn update_one( |  |  |  |     pub fn update_one( | 
			
		
	
		
		
			
				
					
					|  |  |  |         &self, |  |  |  |         &self, | 
			
		
	
		
		
			
				
					
					|  |  |  |         selector: &Document, |  |  |  |         selector: &Document, | 
			
		
	
	
		
		
			
				
					|  |  | @ -130,8 +128,6 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |     ///
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// TODO: document must only contain fields whose key starts
 |  |  |  |     /// TODO: document must only contain fields whose key starts
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// with $, these is no error handling for this.
 |  |  |  |     /// with $, these is no error handling for this.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_update_one.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn update( |  |  |  |     pub fn update( | 
			
		
	
		
		
			
				
					
					|  |  |  |         &self, |  |  |  |         &self, | 
			
		
	
		
		
			
				
					
					|  |  |  |         selector: &Document, |  |  |  |         selector: &Document, | 
			
		
	
	
		
		
			
				
					|  |  | @ -157,8 +153,6 @@ impl<'a> BulkOperation<'a> { | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// multiple times.
 |  |  |  |     /// multiple times.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |     ///
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// Returns a document with an overview of the bulk operation if successfull.
 |  |  |  |     /// Returns a document with an overview of the bulk operation if successfull.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ///
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /// See: http://api.mongodb.org/c/current/mongoc_bulk_operation_execute.html
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     pub fn execute(self) -> Result<Document> { |  |  |  |     pub fn execute(self) -> Result<Document> { | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Bsonc to store the reply
 |  |  |  |         // Bsonc to store the reply
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         let mut reply = Bsonc::new(); |  |  |  |         let mut reply = Bsonc::new(); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |