This repository has no description
1(*---------------------------------------------------------------------------
2 Copyright (c) 2025 Anil Madhavapeddy. All rights reserved.
3 SPDX-License-Identifier: ISC
4 ---------------------------------------------------------------------------*)
5
6(* Thread properties *)
7
8type property = [
9 | `Id
10 | `Email_ids
11]
12
13let property_to_string : [< property ] -> string = function
14 | `Id -> "id"
15 | `Email_ids -> "emailIds"
16
17let property_of_string s : property option =
18 match s with
19 | "id" -> Some `Id
20 | "emailIds" -> Some `Email_ids
21 | _ -> None
22
23(* Thread type *)
24
25type t = {
26 id : Proto_id.t option;
27 email_ids : Proto_id.t list option;
28}
29
30let id t = t.id
31let email_ids t = t.email_ids
32
33let make id email_ids = { id; email_ids }
34
35let jsont =
36 let kind = "Thread" in
37 Jsont.Object.map ~kind make
38 |> Jsont.Object.opt_mem "id" Proto_id.jsont ~enc:id
39 |> Jsont.Object.opt_mem "emailIds" (Jsont.list Proto_id.jsont) ~enc:email_ids
40 |> Jsont.Object.finish