pub struct UpsertRecord<'a, M: 'static, PK: 'static, I> { /* private fields */ }Implementations§
Source§impl<'a, M: 'static, PK: 'static, I> UpsertRecord<'a, M, PK, I>where
I: UpsertModelInput<M>,
impl<'a, M: 'static, PK: 'static, I> UpsertRecord<'a, M, PK, I>where
I: UpsertModelInput<M>,
Sourcepub fn on_conflict(self, target: ConflictTarget) -> Self
pub fn on_conflict(self, target: ConflictTarget) -> Self
Choose the conflict target. Defaults to the model’s primary
key; pass ConflictTarget::Columns to upsert on a composite
unique key instead. The named columns must form a UNIQUE
constraint/index on the target table.
Sourcepub fn preview_sql(&self) -> String
pub fn preview_sql(&self) -> String
Render an approximate SQL preview. The actual upsert wraps a
SELECT … FOR UPDATE around the INSERT … ON CONFLICT, but
this preview returns only the conflict-bearing statement.
pub async fn run(self, ctx: &CoolContext) -> Result<M, CoolError>
Sourcepub async fn run_in_tx<'tx>(
self,
tx: &mut Transaction<'tx, Postgres>,
ctx: &CoolContext,
) -> Result<M, CoolError>
pub async fn run_in_tx<'tx>( self, tx: &mut Transaction<'tx, Postgres>, ctx: &CoolContext, ) -> Result<M, CoolError>
Like Self::run but participates in a caller-supplied
transaction. The conflict probe runs against tx, so the row
lock is held until the caller commits. The event outbox is not
drained here.
Trait Implementations§
Auto Trait Implementations§
impl<'a, M, PK, I> Freeze for UpsertRecord<'a, M, PK, I>where
I: Freeze,
impl<'a, M, PK, I> !RefUnwindSafe for UpsertRecord<'a, M, PK, I>
impl<'a, M, PK, I> Send for UpsertRecord<'a, M, PK, I>where
I: Send,
impl<'a, M, PK, I> Sync for UpsertRecord<'a, M, PK, I>where
I: Sync,
impl<'a, M, PK, I> Unpin for UpsertRecord<'a, M, PK, I>where
I: Unpin,
impl<'a, M, PK, I> UnsafeUnpin for UpsertRecord<'a, M, PK, I>where
I: UnsafeUnpin,
impl<'a, M, PK, I> !UnwindSafe for UpsertRecord<'a, M, PK, I>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more