pub struct Mapper { /* private fields */ }Expand description
Maps row changes of bound relations to input-cell edits.
Implementations§
Source§impl Mapper
impl Mapper
Sourcepub fn new(model: &Model, bindings: HashMap<u32, Vec<Binding>>) -> Self
pub fn new(model: &Model, bindings: HashMap<u32, Vec<Binding>>) -> Self
A mapper for model (its items name the dimension values) with
bindings per relation oid. Aggregated bindings start with no rows:
Mapper::seed them.
Sourcepub fn aggregated(&self) -> Vec<(u32, Binding)>
pub fn aggregated(&self) -> Vec<(u32, Binding)>
The aggregated bindings, with their relation oids: each needs a
Mapper::seed.
Sourcepub fn unknown(
&self,
rels: &HashMap<u32, Relation>,
txns: &[Txn],
) -> Vec<(CategoryId, String)>
pub fn unknown( &self, rels: &HashMap<u32, Relation>, txns: &[Txn], ) -> Vec<(CategoryId, String)>
The dimension values in txns’ rows of bound relations (old rows
and new, as the loader’s ::text reads them) that have no item yet,
sorted. As the loader does, a row’s non-NULL values count even when
another of its dimensions is NULL.
Sourcepub fn add_item(&mut self, cat: CategoryId, name: &str, id: ItemId)
pub fn add_item(&mut self, cat: CategoryId, name: &str, id: ItemId)
Add item id, named name, of category cat (minted by the caller).
Sourcepub fn seed(
&mut self,
model: &mut Model,
measure: MeasureId,
oid: u32,
rows: &[FoldRow],
snap: Snap,
) -> Result<(), Rebuild>
pub fn seed( &mut self, model: &mut Model, measure: MeasureId, oid: u32, rows: &[FoldRow], snap: Snap, ) -> Result<(), Rebuild>
Load aggregated measure measure’s fold state from the rows of its
seed_sql (snap the snapshot they were read with), its value
column being of Postgres type oid, and set model‘s cells for it
to the folds’. A text min or max keeps no state (its changes
rebuild) and leaves the model’s cells as they are.
Sourcepub fn map(
&mut self,
model: &mut Model,
rels: &HashMap<u32, Relation>,
txns: &[Txn],
replay_until: u64,
) -> Result<Vec<Edit>, Rebuild>
pub fn map( &mut self, model: &mut Model, rels: &HashMap<u32, Relation>, txns: &[Txn], replay_until: u64, ) -> Result<Vec<Edit>, Rebuild>
Apply the changes of txns (tuples of the relations in rels) to
model’s input cells, as the loader would see the rows, and return
one edit per cell whose value the batch changed, with its final value
(a cell set back to its old value makes none). Changes to relations
without a binding are ignored. Transactions that ended at or before
replay_until may already be in model (see the module docs). On
Err the model’s inputs and this mapper’s folds are half-updated:
discard both.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Mapper
impl RefUnwindSafe for Mapper
impl Send for Mapper
impl Sync for Mapper
impl Unpin for Mapper
impl UnsafeUnpin for Mapper
impl UnwindSafe for Mapper
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Data for Twhere
T: Clone + 'static,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> ProgressEventTimestamp for T
impl<T> ProgressEventTimestamp for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign, for types that do not implement AddAssign.