pub struct CdcLog { /* private fields */ }Expand description
An ordered log of CDC events.
Events are kept in LSN order. The log supports appending, serialisation to a newline-delimited JSON file, and replay.
Implementations§
Source§impl CdcLog
impl CdcLog
Sourcepub fn with_start_lsn(start: u64) -> Self
pub fn with_start_lsn(start: u64) -> Self
Create a log with a specific starting LSN.
Sourcepub fn push(&mut self, event: CdcEvent)
pub fn push(&mut self, event: CdcEvent)
Append a pre-built event (its existing LSN is preserved; next_lsn is
advanced if needed to stay consistent).
Sourcepub fn insert(
&mut self,
ts_ms: i64,
table: impl Into<String>,
after: RowImage,
) -> u64
pub fn insert( &mut self, ts_ms: i64, table: impl Into<String>, after: RowImage, ) -> u64
Append an INSERT and auto-assign the next LSN.
Sourcepub fn update(
&mut self,
ts_ms: i64,
table: impl Into<String>,
before: RowImage,
after: RowImage,
) -> u64
pub fn update( &mut self, ts_ms: i64, table: impl Into<String>, before: RowImage, after: RowImage, ) -> u64
Append an UPDATE and auto-assign the next LSN.
Sourcepub fn delete(
&mut self,
ts_ms: i64,
table: impl Into<String>,
before: RowImage,
) -> u64
pub fn delete( &mut self, ts_ms: i64, table: impl Into<String>, before: RowImage, ) -> u64
Append a DELETE and auto-assign the next LSN.
Sourcepub fn events_for_table(&self, table: &str) -> Vec<&CdcEvent>
pub fn events_for_table(&self, table: &str) -> Vec<&CdcEvent>
Filter events for a single table.
Sourcepub fn write_ndjson<W: Write>(&self, writer: W) -> Result<()>
pub fn write_ndjson<W: Write>(&self, writer: W) -> Result<()>
Serialize the log to newline-delimited JSON (NDJSON).
Sourcepub fn read_ndjson<R: BufRead>(reader: R) -> Result<Self>
pub fn read_ndjson<R: BufRead>(reader: R) -> Result<Self>
Deserialize a log from newline-delimited JSON produced by write_ndjson.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CdcLog
impl RefUnwindSafe for CdcLog
impl Send for CdcLog
impl Sync for CdcLog
impl Unpin for CdcLog
impl UnsafeUnpin for CdcLog
impl UnwindSafe for CdcLog
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.