package irmin

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Store creates a contents store.

Parameters

module S : sig ... end

Signature

include CONTENT_ADDRESSABLE_STORE with type 'a t = 'a S.t with type key = S.key with type value = S.value

Content-addressable stores

Content-addressable stores are store where it is possible to read and add new values. Keys are derived from the values raw contents and hence are deterministic.

type 'a t = 'a S.t

The type for content-addressable backend stores. The 'a phantom type carries information about the store mutability.

type key = S.key

The type for keys.

type value = S.value

The type for raw values.

val mem : [> `Read ] t -> key -> bool Lwt.t

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

val find : [> `Read ] 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 : [> `Write ] t -> value -> key Lwt.t

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

val unsafe_add : [> `Write ] t -> key -> value -> unit Lwt.t

Same as add but allows to specify the key directly. The backend might choose to discared that key and/or can be corrupt if the key scheme is not consistent.

val merge : [ `Read | `Write ] t -> key option 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 : Hash.TYPED with type t = key and type value = value

Key provides base functions for user-defined contents keys.

module Val : S with type t = value

Val provides base functions for user-defined contents values.

OCaml

Innovation. Community. Security.