Interface IMaterializedView<S, E, V, EM>

Materialized view interface is using/delegating a IView to handle events of type E and to maintain a state of projection(s) via IViewStateRepository as a result. Essentially, it represents the query/view side of the CQRS pattern.

Author

Иван Дугалић / Ivan Dugalic /

Idugalic

interface IMaterializedView<S, E, V, EM> {
    evolve: ((state, event) => S);
    fetch: ((event) => Promise<null | S & V>);
    handle: ((event) => Promise<S & V>);
    initialState: S;
    save: ((state, eventMetadata, version) => Promise<S & V>);
}

Type Parameters

  • S

    Materialized View state of type S

  • E

    Events of type E that are handled by this Materialized View

  • V

    Version of the state

  • EM

    Event Metadata

Hierarchy (view full)

Implemented by

Properties

evolve: ((state, event) => S)

Type declaration

    • (state, event): S
    • Parameters

      • state: S
      • event: E

      Returns S

fetch: ((event) => Promise<null | S & V>)

Fetch state

Type declaration

    • (event): Promise<null | S & V>
    • Parameters

      • event: E & EM

        Event of type E with metadata of type EM

      Returns Promise<null | S & V>

Returns

current state / S with version / V, or NULL

handle: ((event) => Promise<S & V>)

Handles the event of type E, and returns new persisted state of type S

Type declaration

    • (event): Promise<S & V>
    • Parameters

      • event: E & EM

        Event of type E & EM to be handled / event with event metadata

      Returns Promise<S & V>

Returns

State of type S & V

initialState: S
save: ((state, eventMetadata, version) => Promise<S & V>)

Save state

Type declaration

    • (state, eventMetadata, version): Promise<S & V>
    • Parameters

      • state: S

        State and Event Metadata of type S & EM

      • eventMetadata: EM

        Event Metadata of type EM

      • version: null | V

        State version of type V | null

      Returns Promise<S & V>

Returns

newly saved State and Version of type S & V

Generated using TypeDoc