aboutsummaryrefslogblamecommitdiffstats
path: root/lib/kernel/Storage.ml
blob: 952b3064d860768077de96045ff57d7133e866d0 (plain) (tree)





















                                                    
module Make (S : Abstract.Storage.STORAGE) = struct
  let finish tx = function
    | Ok value ->
       let open Utilities.Result in
       let* () = S.commit tx in
       Ok value
    | Error condition ->
       let _ = S.abort tx in
       Error condition

  let with_transaction connection body =
    let open Utilities.Result in
    let* tx = S.start connection in
    body tx |> finish tx

  let store_blob tx blob =
    let open Utilities.Result in
    let address = Concepts.Hash.hash_of_blob blob in
    let* () = S.put tx address blob in
    Ok address

end