package irmin-mem

  1. Overview
  2. Docs

Contents is the underlying contents store.

include Irmin.AO with type key = Val.contents

Append-only stores

Append-only stores are read-only store where it is also possible to add values. Keys are derived from the values raw contents and hence are deterministic.

include Irmin.RO with type key = Val.contents

Read-only stores

type t

The type for read-only backend stores.

type key = Val.contents

The type for keys.

type value

The type for raw values.

val mem : t -> key -> bool Lwt.t

mem t k is true iff k is present in t.

val find : t -> key -> value option Lwt.t

find t k is Some v if k is associated to v in t and None is k is not present in t.

val add : t -> value -> key Lwt.t

Write the contents of a value to the store. It's the responsibility of the append-only store to generate a consistent key.

val merge : t -> key option Irmin.Merge.t

merge t lifts the merge functions defined on contents values to contents key. The merge function will: (i) read the values associated with the given keys, (ii) use the merge function defined on values and (iii) write the resulting values into the store to get the resulting key. See Contents.S.merge.

If any of these operations fail, return `Conflict.

module Key : Irmin.Hash.S with type t = key

Key provides base functions for user-defined contents keys.

module Val : Irmin.Contents.S with type t = value

Val provides base functions for user-defined contents values.