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
-
ObserveFound(revision: core.Revision, payload: payload) -
ObserveUnknown(core.UnknownResource)
A store owns each resource’s payload alongside its revision.
pub type Store(payload) {
Store(
entries: List(#(core.ResourceId, core.Revision, payload)),
)
}
Constructors
-
Store(entries: List(#(core.ResourceId, core.Revision, payload)))
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.