pub struct ViewDelegate<'a, V: 'static, PK: 'static> { /* private fields */ }Expand description
View delegate for views that declared an @id field. Exposes
find_many + find_unique (and refresh() on materialized
views). Views declared @@no_unique get ViewDelegateNoUnique
instead, which omits find_unique at the type level so a call
like runtime.views().<v>().find_unique(()) is a compile error
rather than a runtime “WHERE = $1” footgun.
Implementations§
Source§impl<'a, V: 'static, PK: 'static> ViewDelegate<'a, V, PK>
impl<'a, V: 'static, PK: 'static> ViewDelegate<'a, V, PK>
pub fn new( runtime: &'a SqlxRuntime, descriptor: &'static ViewDescriptor<V, PK>, ) -> Self
Sourcepub fn descriptor(&self) -> &'static ViewDescriptor<V, PK>
pub fn descriptor(&self) -> &'static ViewDescriptor<V, PK>
The typed descriptor the delegate was constructed with.
Useful for callers that need to inspect view metadata (e.g.
is_materialized, source_tables) without going through the
runtime.
pub fn find_many(&self) -> FindMany<'a, V, PK>
Sourcepub fn find_unique(&self, id: PK) -> FindUnique<'a, V, PK>
pub fn find_unique(&self, id: PK) -> FindUnique<'a, V, PK>
Single-row lookup by primary key. Only available on views
with an @id field — @@no_unique views get
ViewDelegateNoUnique, which doesn’t expose this method.
Sourcepub async fn refresh(&self) -> Result<(), CoolError>
pub async fn refresh(&self) -> Result<(), CoolError>
REFRESH MATERIALIZED VIEW CONCURRENTLY <name> — only valid
on @@materialized views. Concurrent refresh holds an
ACCESS SHARE lock (instead of the ACCESS EXCLUSIVE
non-concurrent refresh takes), letting readers continue
against the previous snapshot while the rebuild runs.
Returns a Forbidden error if called on a non-materialized
view — the macro emits this method unconditionally for
ViewDescriptor consumers, with the gate enforced at runtime
so the wire contract is uniform. (At codegen time the macro
can also choose to omit the method entirely on non-materialized
descriptors; the runtime gate is the safety net.)
Trait Implementations§
Source§impl<'a, V: Clone + 'static, PK: Clone + 'static> Clone for ViewDelegate<'a, V, PK>
impl<'a, V: Clone + 'static, PK: Clone + 'static> Clone for ViewDelegate<'a, V, PK>
Source§fn clone(&self) -> ViewDelegate<'a, V, PK>
fn clone(&self) -> ViewDelegate<'a, V, PK>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl<'a, V: Copy + 'static, PK: Copy + 'static> Copy for ViewDelegate<'a, V, PK>
Auto Trait Implementations§
impl<'a, V, PK> Freeze for ViewDelegate<'a, V, PK>
impl<'a, V, PK> !RefUnwindSafe for ViewDelegate<'a, V, PK>
impl<'a, V, PK> Send for ViewDelegate<'a, V, PK>
impl<'a, V, PK> Sync for ViewDelegate<'a, V, PK>
impl<'a, V, PK> Unpin for ViewDelegate<'a, V, PK>
impl<'a, V, PK> UnsafeUnpin for ViewDelegate<'a, V, PK>
impl<'a, V, PK> !UnwindSafe for ViewDelegate<'a, V, PK>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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> ⓘ
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> ⓘ
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