include Mirage_kv.RO
The type for errors.
include Mirage_device.S
type key = Mirage_kv.Key.tThe type for keys.
val exists : t -> key -> ([ `Value | `Dictionary ] option, error) Stdlib.result Lwt.texists t k is Some `Value if k is bound to a value in t, Some `Dictionary if k is a prefix of a valid key in t and None if no key with that prefix exists in t.
exists answers two questions: does the key exist and is it referring to a value or a dictionary.
An error occurs when the underlying storage layer fails.
val get : t -> key -> (string, error) Stdlib.result Lwt.tget t k is the value bound to k in t.
The result is Error (`Value_expected k) if k refers to a dictionary in t.
val list : t -> key -> ((string * [ `Value | `Dictionary ]) list, error) Stdlib.result Lwt.tlist t k is the list of entries and their types in the dictionary referenced by k in t.
The result is Error (`Dictionary_expected k) if k refers to a value in t.
val last_modified : t -> key -> (int * int64, error) Stdlib.result Lwt.tlast_modified t k is the last time the value bound to k in t has been modified.
The modification time (d, ps) is a span for the signed POSIX picosecond span d * 86_400e12 + ps. d is a signed number of POSIX days and ps a number of picoseconds in the range [0;86_399_999_999_999_999L].
When the value bound to k is a dictionary, the modification time is the latest modification of all entries in that dictionary. This behaviour is only one level deep and not recursive.
val digest : t -> key -> (string, error) Stdlib.result Lwt.tdigest t k is the unique digest of the value bound to k in t.
When the value bound to k is a dictionary, the digest is a unique and deterministic digest of its entries.
val connect : ?depth:int -> ?branch:string -> ?root:key -> ?conduit:Conduit_mirage.t -> ?resolver:Resolver_lwt.t -> ?headers:Cohttp.Header.t -> G.t -> string -> t Lwt.tconnect ?depth ?branch ?path g uri clones the given uri into g repository, using the given branch, depth and '/'-separated sub-path. By default, branch is master, depth is 1 and path is empty, ie. reads will be relative to the root of the repository.