pub struct ReportingProjector;Expand description
Applies reporting facts inside the caller’s transaction and projector lock.
begin_rebuild opens a new generation with its cutoff and the in-progress
marker; callers hold the source locks, so every fact minted before the
cutoff has committed and every later one is above it and will be applied.
clear_targets empties every report table and the revision guard for that
generation, in a separate transaction so no source lock is held while the
targets are truncated. finish_rebuild marks the baseline complete,
leaving the cutoff as recorded by begin_rebuild or raised since by a
privacy compaction — lowering it would replay facts that compaction has
already delivered.
Implementations§
Source§impl ReportingProjector
impl ReportingProjector
pub async fn begin_rebuild( connection: &mut PgConnection, cutoff: i64, ) -> Result<i64>
pub async fn clear_targets( connection: &mut PgConnection, generation: i64, ) -> Result<()>
pub async fn finish_rebuild( connection: &mut PgConnection, generation: i64, ) -> Result<()>
pub async fn apply_fact( connection: &mut PgConnection, fact: &ReportingRow, ) -> Result<bool>
Trait Implementations§
Source§impl Clone for ReportingProjector
impl Clone for ReportingProjector
impl Copy for ReportingProjector
Auto Trait Implementations§
impl Freeze for ReportingProjector
impl RefUnwindSafe for ReportingProjector
impl Send for ReportingProjector
impl Sync for ReportingProjector
impl Unpin for ReportingProjector
impl UnsafeUnpin for ReportingProjector
impl UnwindSafe for ReportingProjector
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<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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> ⓘ
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