Skip to main content

QueryFactory

Trait QueryFactory 

Source
pub trait QueryFactory: QueryParams {
    // Required methods
    fn parse(value: Value) -> Result<Arc<dyn AnyQuery>, Error>;
    fn cell_factory(
        query: Arc<dyn AnyQuery>,
        registry: Arc<StoreRegistry>,
        request_ctx: Arc<RequestContext>,
        server_ctx: Option<Arc<MykoServerContext>>,
    ) -> Result<FilteredCellMap, String>;
    fn window_cell_factory(
        query: Arc<dyn AnyQuery>,
        registry: Arc<StoreRegistry>,
        request_ctx: Arc<RequestContext>,
        server_ctx: Arc<MykoServerContext>,
        window: QueryWindow,
    ) -> Result<Option<WindowedQuerySource>, String>;
}
Expand description

Factory trait for creating query registration data.

This trait has a blanket implementation for all types implementing QueryParams, so user-defined queries automatically get parse and cell_factory methods.

Required Methods§

Source

fn parse(value: Value) -> Result<Arc<dyn AnyQuery>, Error>

Parse JSON into this query type.

§Errors

Returns an error when the requested operation cannot be completed.

Source

fn cell_factory( query: Arc<dyn AnyQuery>, registry: Arc<StoreRegistry>, request_ctx: Arc<RequestContext>, server_ctx: Option<Arc<MykoServerContext>>, ) -> Result<FilteredCellMap, String>

Create a reactive cell for this query.

§Errors

Returns an error when the requested operation cannot be completed.

Source

fn window_cell_factory( query: Arc<dyn AnyQuery>, registry: Arc<StoreRegistry>, request_ctx: Arc<RequestContext>, server_ctx: Arc<MykoServerContext>, window: QueryWindow, ) -> Result<Option<WindowedQuerySource>, String>

Create a source-level bounded query window when the handler supports pushdown.

§Errors

Returns an error when the query payload is invalid or the source cannot build the requested window.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<Q: QueryParams> QueryFactory for Q
where Q::Item: Eventable + WithId + DeserializeOwned + Clone + Debug + Send + Sync + 'static,