pub struct Model<'a, M> { /* private fields */ }Implementations§
source§impl<'a, M> Model<'a, M>where
M: Default + Serialize + DeserializeOwned + Send + Sync + Unpin + Debug + ModelTimestamps + Observer<M>,
impl<'a, M> Model<'a, M>where
M: Default + Serialize + DeserializeOwned + Send + Sync + Unpin + Debug + ModelTimestamps + Observer<M>,
sourcepub fn new(db: Option<&Arc<Database>>, collection_name: &'a str) -> Model<'a, M>
pub fn new(db: Option<&Arc<Database>>, collection_name: &'a str) -> Model<'a, M>
makes a model and stores the data and collection_name to creating collection object to store data into it
§Arguments
db: you cna pass None , in this way model created by global spark connection , or you can pass your own databasecollection_name: it’s collection name that we use in create collection object
returns: Model
§Examples
struct User{
name: String
}
let db = ...;
let user_model = Model::<User>::new(Arc::clone(db) , "users");sourcepub async fn save(
&mut self,
options: impl Into<Option<InsertOneOptions>>,
) -> MongodbResult<Bson>
pub async fn save( &mut self, options: impl Into<Option<InsertOneOptions>>, ) -> MongodbResult<Bson>
saves the change , if the inner has some _id then it’s update the existing unless it’s create new document
pub async fn find_one( &mut self, doc: impl Into<Document>, options: impl Into<Option<FindOneOptions>>, ) -> MongodbResult<Option<&mut Self>>
sourcepub async fn update(
&self,
query: impl Into<Document>,
doc: impl Into<Document>,
options: impl Into<Option<UpdateOptions>>,
) -> MongodbResult<UpdateResult>
pub async fn update( &self, query: impl Into<Document>, doc: impl Into<Document>, options: impl Into<Option<UpdateOptions>>, ) -> MongodbResult<UpdateResult>
this is raw update , and you can pass document or your model
§Examples
§with the raw doc
let user_model = User::new_model(Some(&db));
let updated = user_model.update(
doc! {
"name": "Hossein",
},
doc! {
"$set": {
"name": "Hossein 33"
}
},
None,
).await.unwrap(); §with the model
let user_model = User::new_model(Some(&db)); let mut sample_user = User::default(); sample_user.name = “Hossein 33”.to_string(); let updated = user_model.update( &sample_user, doc! { “$set”: { “name”: “Hossein 3355” } }, None, ).await.unwrap();
§with_model_instance
let mut user_model = User::new_model(Some(&db));user_model.name = “Hossein 3355”.to_string(); user_model.age = 58; let updated = user_model.update( &user_model, doc! { “$set”: { “name”: “Hossein 325” } }, None, ).await.unwrap();
NOTE : updated observer doesn’t execute in this method
pub async fn find( &self, filter: impl Into<Document>, options: impl Into<Option<FindOptions>>, ) -> MongodbResult<Cursor<M>>
pub async fn find_and_collect( &self, filter: impl Into<Document>, options: impl Into<Option<FindOptions>>, ) -> MongodbResult<Vec<MongodbResult<M>>>
pub fn register_attributes(&self, attributes: Vec<&str>)
pub async fn delete( &mut self, query: impl Into<Document>, options: impl Into<Option<DeleteOptions>>, ) -> MongodbResult<u64>
pub fn fill(&mut self, inner: M)
source§impl<'a, M> Model<'a, M>
impl<'a, M> Model<'a, M>
sourcepub fn take_inner(&mut self) -> M
pub fn take_inner(&mut self) -> M
this method takes the inner and gives you ownership of inner then replace it with default value
pub fn inner_ref(&self) -> &M
pub fn inner_mut(&mut self) -> &mut M
pub fn inner_to_doc(&self) -> MongodbResult<Document>
Trait Implementations§
Auto Trait Implementations§
impl<'a, M> Freeze for Model<'a, M>
impl<'a, M> !RefUnwindSafe for Model<'a, M>
impl<'a, M> Send for Model<'a, M>where
M: Send,
impl<'a, M> Sync for Model<'a, M>where
M: Sync,
impl<'a, M> Unpin for Model<'a, M>where
M: Unpin,
impl<'a, M> !UnwindSafe for Model<'a, M>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.