package irmin

  1. Overview
  2. Docs
Irmin, a distributed database that follows the same design principles as Git

Install

Dune Dependency

Authors

Maintainers

Sources

irmin-3.6.0.tbz
sha256=98cc035d7b618ae8d94925a00d80159d9fdabf5f165b80aedb5c879aa4cf4b8e
sha512=8a2b91621a5b74d9d88e975faa14efef18cf12cf0194f80279b0ac574468872bc0fc33d827f85dca55dbd4c46b7bb002808d9fc2fa0fa44fc85a845838c9f43b

doc/irmin.mem/Irmin_mem/Make/Backend/Contents/index.html

Module Backend.ContentsSource

A contents store.

include Irmin.Indexable.S with type hash = Hash.t with type value = Schema.Contents.t with type key = contents_key

Read-only stores

Read-only stores are store where it is only possible to read existing values.

Sourcetype -'a t

The type for stores. The 'a phantom type carries information about the store mutability.

The type for keys.

The type for raw values.

Sourceval mem : [> Irmin.Perms.read ] t -> key -> bool Lwt.t

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

Sourceval find : [> Irmin.Perms.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.

Sourceval close : 'a t -> unit Lwt.t

close t frees up all the resources associated with t. Any operations run on a closed handle will raise Closed.

Sourcetype hash = Hash.t

The type of hashes of value.

Sourceval add : [> Irmin.Perms.write ] t -> value -> key Lwt.t

Write the contents of a value to the store, and obtain its key.

Sourceval unsafe_add : [> Irmin.Perms.write ] t -> hash -> value -> key Lwt.t

Same as add but allows specifying the value's hash directly. The backend might choose to discard that hash and/or can be corrupt if the hash is not consistent.

Sourceval index : [> Irmin.Perms.read ] t -> hash -> key option Lwt.t

Indexing maps the hash of a value to a corresponding key of that value in the store. For stores that are addressed by hashes directly, this is typically fun _t h -> Lwt.return (Key.of_hash h); for stores with more complex addressing schemes, index may attempt a lookup operation in the store.

In general, indexing is best-effort and reveals no information about the membership of the value in the store. In particular:

  • index t hash = Some key doesn't guarantee mem t key: the value with hash hash may still be absent from the store;
  • index t hash = None doesn't guarantee that there is no key such that mem t key and Key.to_hash key = hash: the value may still be present in the store under a key that is not indexed.

batch t f applies the writes in f in a separate batch. The exact guarantees depend on the implementation.

Sourcemodule Key : Irmin.Key.S with type t = key and type hash = hash
Sourceval merge : [> Irmin.Perms.read_write ] 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 val-S.merge.

If any of these operations fail, return `Conflict.

Sourcemodule Val : sig ... end
Sourcemodule Hash : Irmin.Hash.Typed with type t = hash and type value = value
OCaml

Innovation. Community. Security.