Implement the push function

This commit is contained in:
Romain Calascibetta 2022-10-19 11:37:41 +02:00
parent 36ceb8a0cd
commit 3ff46e50ac
2 changed files with 9 additions and 2 deletions

View file

@ -83,8 +83,8 @@ let pull t =
Store.Ref.resolve t.store t.branch >>= fun r -> Store.Ref.resolve t.store t.branch >>= fun r ->
let head = let head =
Result.map_error Result.map_error
(fun e -> `Msg (Fmt.str "error resolving branch %s: %a" (fun e -> `Msg (Fmt.str "error resolving branch %a: %a"
(Git.Reference.to_string t.branch) Git.Reference.pp t.branch
Store.pp_error e)) Store.pp_error e))
r |> to_invalid r |> to_invalid
in in
@ -92,6 +92,12 @@ let pull t =
t.head <- Some head; t.head <- Some head;
Lwt.return (Ok diff) Lwt.return (Ok diff)
let push t =
let open Lwt.Infix in
Sync.push ~capabilities ~ctx:t.ctx t.edn t.store [ `Update (t.branch, t.branch) ]
>|= Result.map_error (fun err -> `Msg (Fmt.str "error pushing branch %a: %a"
Git.Reference.pp t.branch Sync.pp_error err))
let connect ctx endpoint = let connect ctx endpoint =
let open Lwt.Infix in let open Lwt.Infix in
init_store () >>= fun store -> init_store () >>= fun store ->

View file

@ -22,4 +22,5 @@ type change = [ `Add of key
| `Change of key ] | `Change of key ]
val pull : t -> (change list, [> `Msg of string ]) result Lwt.t val pull : t -> (change list, [> `Msg of string ]) result Lwt.t
val push : t -> (unit, [> `Msg of string ]) result Lwt.t
val size : t -> key -> (int, error) result Lwt.t val size : t -> key -> (int, error) result Lwt.t