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) -> Result<Name, InvalidNameError>;
fn map(&self, document: &Document<'_>) -> MapResult<Self::Key, Self::Value>; fn view_name(&self) -> Result<ViewName, InvalidNameError> { ... }
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. The guide has an overview.

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) -> Result<Name, InvalidNameError>[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 view_name(&self) -> Result<ViewName, InvalidNameError>[src]

The namespaced name of the view.

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

impl View for BasicByBrokenParentId[src]

type Collection = Basic

type Key = ()

type Value = ()

impl View for BasicByCategory[src]

type Collection = Basic

type Key = String

type Value = usize

impl View for BasicByParentId[src]

type Collection = Basic

type Key = Option<u64>

type Value = usize

impl View for BasicCount[src]

type Collection = Basic

type Key = ()

type Value = usize

Loading content...