pub struct CollectionDocument<C>where
    C: SerializedCollection,{
    pub header: CollectionHeader<C::PrimaryKey>,
    pub contents: C::Contents,
}
Expand description

A document with serializable contents.

Fields§

§header: CollectionHeader<C::PrimaryKey>

The header of the document, which contains the id and Revision.

§contents: C::Contents

The document’s contents.

Implementations§

source§

impl<C> CollectionDocument<C>where C: SerializedCollection,

source

pub fn update<Cn: Connection>(&mut self, connection: &Cn) -> Result<(), Error>

Updates the document stored in the database with the contents of this collection document.

if let Some(mut document) = MyCollection::get(&42, &db)? {
    // ... do something `document`
    document.update(&db)?;
    println!(
        "The document has been updated: {:?}",
        document.header.revision
    );
}
source

pub fn update_in_transaction( &self, transaction: &mut Transaction ) -> Result<(), Error>

Pushes an update Operation to the transaction for this document.

The changes will happen once the transaction is applied.

source

pub async fn update_async<Cn: AsyncConnection>( &mut self, connection: &Cn ) -> Result<(), Error>

Stores the new value of contents in the document.

if let Some(mut document) = MyCollection::get_async(&42, &db).await? {
    // modify the document
    document.update_async(&db).await?;
    println!("Updated revision: {:?}", document.header.revision);
}
source

pub fn modify<Cn: Connection, Modifier: FnMut(&mut Self) + Send + Sync>( &mut self, connection: &Cn, modifier: Modifier ) -> Result<(), Error>where C::Contents: Clone,

Modifies self, automatically retrying the modification if the document has been updated on the server.

Data loss warning

If you’ve modified self before calling this function and a conflict occurs, all changes to self will be lost when the current document is fetched before retrying the process again. When you use this function, you should limit the edits to the value to within the modifier callback.

source

pub async fn modify_async<Cn: AsyncConnection, Modifier: FnMut(&mut Self) + Send + Sync>( &mut self, connection: &Cn, modifier: Modifier ) -> Result<(), Error>where C::Contents: Clone,

Modifies self, automatically retrying the modification if the document has been updated on the server.

Data loss warning

If you’ve modified self before calling this function and a conflict occurs, all changes to self will be lost when the current document is fetched before retrying the process again. When you use this function, you should limit the edits to the value to within the modifier callback.

source

pub fn delete<Cn: Connection>(&self, connection: &Cn) -> Result<(), Error>

Removes the document from the collection.

if let Some(document) = MyCollection::get(&42, &db)? {
    document.delete(&db)?;
}
source

pub async fn delete_async<Cn: AsyncConnection>( &self, connection: &Cn ) -> Result<(), Error>

Removes the document from the collection.

if let Some(document) = MyCollection::get_async(&42, &db).await? {
    document.delete_async(&db).await?;
}
source

pub fn delete_in_transaction( &self, transaction: &mut Transaction ) -> Result<(), Error>

Pushes a delete Operation to the transaction for this document.

The document will be deleted once the transaction is applied.

source

pub fn refresh<Cn: Connection>(&mut self, connection: &Cn) -> Result<(), Error>

Refreshes this instance from connection. If the document is no longer present, Error::DocumentNotFound will be returned.

source

pub async fn refresh_async<Cn: AsyncConnection>( &mut self, connection: &Cn ) -> Result<(), Error>

Refreshes this instance from connection. If the document is no longer present, Error::DocumentNotFound will be returned.

source

pub fn to_document(&self) -> Result<OwnedDocument, Error>

Converts this value to a serialized Document.

Trait Implementations§

source§

impl<C> Clone for CollectionDocument<C>where C: SerializedCollection + Clone, C::PrimaryKey: Clone, C::Contents: Clone,

source§

fn clone(&self) -> CollectionDocument<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<C> Debug for CollectionDocument<C>where C: SerializedCollection + Debug, C::PrimaryKey: Debug, C::Contents: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de, C> Deserialize<'de> for CollectionDocument<C>where C: SerializedCollection, C::PrimaryKey: Deserialize<'de>, C::Contents: Deserialize<'de>,

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<C> HasHeader for CollectionDocument<C>where C: SerializedCollection,

source§

fn header(&self) -> Result<Header, Error>

Returns the header for this instance.
source§

impl<'a, C> Nameable<'a, <C as Collection>::PrimaryKey> for &'a CollectionDocument<C>where C: SerializedCollection,

source§

fn name(self) -> Result<NamedReference<'a, C::PrimaryKey>, Error>

Returns this name as a NamedReference.
source§

impl<C> PartialEq<CollectionDocument<C>> for CollectionDocument<C>where C: SerializedCollection + PartialEq, C::PrimaryKey: PartialEq, C::Contents: PartialEq,

source§

fn eq(&self, other: &CollectionDocument<C>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<C> Serialize for CollectionDocument<C>where C: SerializedCollection, C::Contents: Serialize, C::PrimaryKey: Serialize,

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<'a, C> TryFrom<&'a BorrowedDocument<'a>> for CollectionDocument<C>where C: SerializedCollection,

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: &'a BorrowedDocument<'a>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a, C> TryFrom<&'a OwnedDocument> for CollectionDocument<C>where C: SerializedCollection,

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: &'a OwnedDocument) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a, 'b, C> TryFrom<&'b CollectionDocument<C>> for BorrowedDocument<'a>where C: SerializedCollection,

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(value: &'b CollectionDocument<C>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a, 'c, C> TryFrom<&'c CollectionDocument<C>> for NamedReference<'a, C::PrimaryKey>where C: SerializedCollection,

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(doc: &'c CollectionDocument<C>) -> Result<Self, Error>

Performs the conversion.
source§

impl<C> Eq for CollectionDocument<C>where C: SerializedCollection + Eq, C::PrimaryKey: Eq, C::Contents: Eq,

source§

impl<C> StructuralEq for CollectionDocument<C>where C: SerializedCollection,

source§

impl<C> StructuralPartialEq for CollectionDocument<C>where C: SerializedCollection,

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,