Trait pliantdb_core::schema::view::View[][src]

pub trait View: Send + Sync + Debug + 'static {
    type Collection: Collection;
    type Key: Key + 'static;
    type Value: Serialize + for<'de> Deserialize<'de> + Send + Sync;
    fn version(&self) -> u64;
fn name(&self) -> Cow<'static, str>;
fn map(&self, document: &Document<'_>) -> MapResult<Self::Key, Self::Value>; fn reduce(
        &self,
        mappings: &[MappedValue<Self::Key, Self::Value>],
        rereduce: bool
    ) -> Result<Self::Value, Error> { ... } }

A map/reduce powered indexing and aggregation schema.

Inspired by CouchDB’s view system

This implementation is under active development, our own docs explaining our implementation will be written as things are solidified.

Associated Types

type Collection: Collection[src]

The collection this view belongs to

type Key: Key + 'static[src]

The key for this view.

type Value: Serialize + for<'de> Deserialize<'de> + Send + Sync[src]

An associated type that can be stored with each entry in the view.

Loading content...

Required methods

fn version(&self) -> u64[src]

The version of the view. Changing this value will cause indexes to be rebuilt.

fn name(&self) -> Cow<'static, str>[src]

The name of the view. Must be unique per collection.

fn map(&self, document: &Document<'_>) -> MapResult<Self::Key, Self::Value>[src]

The map function for this view. This function is responsible for emitting entries for any documents that should be contained in this View. If None is returned, the View will not include the document.

Loading content...

Provided methods

fn reduce(
    &self,
    mappings: &[MappedValue<Self::Key, Self::Value>],
    rereduce: bool
) -> Result<Self::Value, Error>
[src]

The reduce function for this view. If Err(Error::ReduceUnimplemented) is returned, queries that ask for a reduce operation will return an error. See CouchDB’s Reduce/Rereduce documentation for the design this implementation will be inspired by

Loading content...

Implementors

Loading content...