/
Persons.re
105 lines (100 loc) · 2.94 KB
/
Persons.re
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
let ste = ReasonReact.string;
module GetAllPersons = [%graphql
{|
query getAllPersons {
listPeople {
items {
age
id
name
}
}
}
|}
];
module GetAllPersonsQuery = ReasonApollo.CreateQuery(GetAllPersons);
let component = ReasonReact.statelessComponent("Query");
let parseItems = listPeople =>
switch (listPeople) {
| Some(listPeople) =>
let items = listPeople##items;
switch (items) {
| Some(items) =>
let parsedItems =
Js.Array.map(
item =>
switch (item) {
| Some(item) =>
let name = Some(item##name);
let id = Some(item##id);
let age = Some(item##age);
switch (name, id, age) {
| (Some(name), Some(id), Some(age)) =>
id ++ " - " ++ name ++ " -- " ++ string_of_int(age)
| (Some(name), None, None) => name
| (None, Some(id), None) => id
| (None, None, Some(age)) => string_of_int(age)
| (None, None, None) => "Error retrieving item"
};
| None => "Error retrieving item"
},
items,
);
parsedItems;
| None => [||]
};
| None => [||]
};
let make = _children => {
...component,
render: _self =>
<GetAllPersonsQuery>
...(
({result}) =>
<div>
<h1> ("Persons: " |> ste) </h1>
(
switch (result) {
| Error(e) =>
Js.log(e);
"Something Went Wrong" |> ste;
| Loading => "Loading" |> ste
| Data(response) =>
Js.log(response##listPeople);
let listPeople = response##listPeople;
/* let items = response##listPeople##items;
Js.log(items); */
let parsedItems = parseItems(listPeople);
Js.log(parsedItems);
<div> <h1> (ReasonReact.string("TEST")) </h1> </div>;
}
)
</div>
)
</GetAllPersonsQuery>,
};
/* compiles, nothing in ui */
/* let make = _children => {
...component,
render: _self =>
<GetAllPersonsQuery>
...(
({result}) =>
<div>
<h1> ("Persons: " |> ste) </h1>
(
switch (result) {
| Error(e) =>
Js.log(e);
"Something Went Wrong" |> ste;
| Loading => "Loading" |> ste
| Data(response) =>
Js.log(response##listPeople);
<div> (ReasonReact.string("TEST")) </div>;
}
)
</div>
/* renderPersonList(response##listPeople##items) */
)
</GetAllPersonsQuery>,
}; */