this repo has no description
1(*---------------------------------------------------------------------------
2 Copyright (c) 2025 Anil Madhavapeddy. All rights reserved.
3 SPDX-License-Identifier: ISC
4 ---------------------------------------------------------------------------*)
5
6type t = {
7 using : string list;
8 method_calls : Invocation.t list;
9 created_ids : (Id.t * Id.t) list option;
10}
11
12let create ~using ~method_calls ?created_ids () =
13 { using; method_calls; created_ids }
14
15let using t = t.using
16let method_calls t = t.method_calls
17let created_ids t = t.created_ids
18
19let make using method_calls created_ids =
20 { using; method_calls; created_ids }
21
22let jsont =
23 let kind = "Request" in
24 Jsont.Object.map ~kind make
25 |> Jsont.Object.mem "using" (Jsont.list Jsont.string) ~enc:using
26 |> Jsont.Object.mem "methodCalls" (Jsont.list Invocation.jsont) ~enc:method_calls
27 |> Jsont.Object.opt_mem "createdIds" (Json_map.of_id Id.jsont) ~enc:created_ids
28 |> Jsont.Object.finish
29
30let single ~using invocation =
31 { using; method_calls = [invocation]; created_ids = None }
32
33let batch ~using invocations =
34 { using; method_calls = invocations; created_ids = None }