necoherence/store

Types

Closed sum of an observation result, carrying both the held revision and payload, or the absent-resource payload.

pub type Observe(payload) {
  ObserveFound(revision: core.Revision, payload: payload)
  ObserveUnknown(core.UnknownResource)
}

Constructors

A store owns each resource’s payload alongside its revision.

pub type Store(payload) {
  Store(
    entries: List(#(core.ResourceId, core.Revision, payload)),
  )
}

Constructors

Values

pub fn apply(
  store: Store(payload),
  command: core.Command(payload),
) -> core.Outcome(
  #(payload, Store(payload)),
  core.UnknownResource,
  core.StaleBasis,
  boundary,
)

Apply a command against store, bumping the revision and replacing the payload of the matched entry.

pub fn observe(
  store: Store(payload),
  resource: core.ResourceId,
) -> Observe(payload)

Read-only observation: does not change the store.

pub fn store_entries(
  store: Store(payload),
) -> List(#(core.ResourceId, core.Revision, payload))
pub fn store_of(
  entries: List(#(core.ResourceId, core.Revision, payload)),
) -> Store(payload)
pub fn world_of(store: Store(payload)) -> core.World

Projection onto World: drop each entry’s payload.

✨ Search Document