rust_query

Struct TransactionMut

Source
pub struct TransactionMut<'a, S> { /* private fields */ }
Expand description

Same as Transaction, but allows inserting new rows.

TransactionMut always uses the latest version of the database, with the effects of all previous TransactionMuts applied.

To make mutations to the database permanent you need to use TransactionMut::commit. This is to make sure that if a function panics while holding a mutable transaction, it will roll back those changes.

Implementations§

Source§

impl<'t, S> TransactionMut<'t, S>

Source

pub fn try_insert<T: Table>( &mut self, val: impl Writable<T = T>, ) -> Option<TableRow<'t, T>>

Try inserting a value into the database.

Returns a reference to the new inserted value or None if there is a conflict. Conflicts can occur due too unique constraints in the schema.

The method takes a mutable reference so that it can not be interleaved with a multi row query.

Source

pub fn commit(self)

Make the changes made in this TransactionMut permanent.

If the TransactionMut is dropped without calling this function, then the changes are rolled back.

Methods from Deref<Target = Transaction<'a, S>>§

Source

pub fn query<F, R>(&self, f: F) -> R
where F: for<'a> FnOnce(&'a mut Query<'t, 'a, S>) -> R,

Execute a query with multiple results.

Please take a look at the documentation of Query for how to use it.

Source

pub fn query_one<O>(&self, val: impl Dummy<'static, 't, S, Out = O>) -> O
where S: 'static,

Retrieve a single result from the database.

Instead of using Self::query_one in a loop, it is better to call Self::query and return all results at once.

Trait Implementations§

Source§

impl<'a, S> Deref for TransactionMut<'a, S>

Source§

type Target = Transaction<'a, S>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'a, S> Freeze for TransactionMut<'a, S>

§

impl<'a, S> !RefUnwindSafe for TransactionMut<'a, S>

§

impl<'a, S> !Send for TransactionMut<'a, S>

§

impl<'a, S> !Sync for TransactionMut<'a, S>

§

impl<'a, S> Unpin for TransactionMut<'a, S>

§

impl<'a, S> !UnwindSafe for TransactionMut<'a, S>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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, U> Into<U> for T
where 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 for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

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

Source§

fn vzip(self) -> V