Module Make.Batch

The batch API is used to have better control of when data is sent between the client and server when manipulating trees.

type store = t
type t = (path * [ `Contents of [ `Hash of hash | `Value of contents ] * metadata option | `Tree of Request_tree.t | `Remove ]) list

A batch is list of updates and their associated paths

val v : unit -> t

val () creates a new batch

val add_value : path -> ?metadata:metadata -> contents -> t -> t

add_value path ~metadata value batch will add value at path with associated metadata when batch is apply'd

val add_hash : path -> ?metadata:metadata -> hash -> t -> t

add_hash path ~metadata hash batch will add hash at path with associated metadata when batch is apply'd

val add_tree : path -> tree -> t -> t Lwt.t

add_tree path batch will add tree at path when batch is apply'd

Note: if tree has been modified locally, calls to the server may be made.

val remove : path -> t -> t

remove path batch will remove path when batch is apply'd

val apply : info:Info.f -> ?path:path -> store -> t -> commit_key Lwt.t

apply ~info ~path store batch applies batch to the subtree at path (defaults to the root) in store. The key of the commit is returned.