@@ -8,7 +8,13 @@ use serde::{Deserialize, Serialize};
8
8
/// Struct representing the experimental features result from the API.
9
9
#[ derive( Clone , Debug , Deserialize ) ]
10
10
#[ serde( rename_all = "camelCase" ) ]
11
- pub struct ExperimentalFeaturesResult { }
11
+ pub struct ExperimentalFeaturesResult {
12
+ pub metrics : bool ,
13
+ pub logs_route : bool ,
14
+ pub contains_filter : bool ,
15
+ pub network : bool ,
16
+ pub edit_documents_by_function : bool ,
17
+ }
12
18
13
19
/// Struct representing the experimental features request.
14
20
///
@@ -28,12 +34,30 @@ pub struct ExperimentalFeaturesResult {}
28
34
pub struct ExperimentalFeatures < ' a , Http : HttpClient > {
29
35
#[ serde( skip_serializing) ]
30
36
client : & ' a Client < Http > ,
37
+
38
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
39
+ pub metrics : Option < bool > ,
40
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
41
+ pub contains_filter : Option < bool > ,
42
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
43
+ pub logs_route : Option < bool > ,
44
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
45
+ pub network : Option < bool > ,
46
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
47
+ pub edit_documents_by_function : Option < bool > ,
31
48
}
32
49
33
50
impl < ' a , Http : HttpClient > ExperimentalFeatures < ' a , Http > {
34
51
#[ must_use]
35
52
pub fn new ( client : & ' a Client < Http > ) -> Self {
36
- ExperimentalFeatures { client }
53
+ ExperimentalFeatures {
54
+ client,
55
+ metrics : None ,
56
+ logs_route : None ,
57
+ network : None ,
58
+ contains_filter : None ,
59
+ edit_documents_by_function : None ,
60
+ }
37
61
}
38
62
39
63
/// Get all the experimental features
@@ -88,6 +112,34 @@ impl<'a, Http: HttpClient> ExperimentalFeatures<'a, Http> {
88
112
)
89
113
. await
90
114
}
115
+
116
+ pub fn set_metrics ( & mut self , metrics : bool ) -> & mut Self {
117
+ self . metrics = Some ( metrics) ;
118
+ self
119
+ }
120
+
121
+ pub fn set_logs_route ( & mut self , logs_route : bool ) -> & mut Self {
122
+ self . logs_route = Some ( logs_route) ;
123
+ self
124
+ }
125
+
126
+ pub fn set_contains_filter ( & mut self , contains_filter : bool ) -> & mut Self {
127
+ self . contains_filter = Some ( contains_filter) ;
128
+ self
129
+ }
130
+
131
+ pub fn set_edit_documents_by_function (
132
+ & mut self ,
133
+ edit_documents_by_function : bool ,
134
+ ) -> & mut Self {
135
+ self . edit_documents_by_function = Some ( edit_documents_by_function) ;
136
+ self
137
+ }
138
+
139
+ pub fn set_network ( & mut self , network : bool ) -> & mut Self {
140
+ self . network = Some ( network) ;
141
+ self
142
+ }
91
143
}
92
144
93
145
#[ cfg( test) ]
@@ -96,12 +148,52 @@ mod tests {
96
148
use meilisearch_test_macro:: meilisearch_test;
97
149
98
150
#[ meilisearch_test]
99
- async fn test_experimental_features_get ( client : Client ) {
100
- let features = ExperimentalFeatures :: new ( & client) ;
101
- // set feature here, once some exist again
151
+ async fn test_experimental_features_set_metrics ( client : Client ) {
152
+ let mut features = ExperimentalFeatures :: new ( & client) ;
153
+ features. set_metrics ( true ) ;
154
+ let _ = features. update ( ) . await . unwrap ( ) ;
155
+
156
+ let res = features. get ( ) . await . unwrap ( ) ;
157
+ assert ! ( res. metrics)
158
+ }
159
+
160
+ #[ meilisearch_test]
161
+ async fn test_experimental_features_set_logs_route ( client : Client ) {
162
+ let mut features = ExperimentalFeatures :: new ( & client) ;
163
+ features. set_logs_route ( true ) ;
164
+ let _ = features. update ( ) . await . unwrap ( ) ;
165
+
166
+ let res = features. get ( ) . await . unwrap ( ) ;
167
+ assert ! ( res. logs_route)
168
+ }
169
+
170
+ #[ meilisearch_test]
171
+ async fn test_experimental_features_set_contains_filter ( client : Client ) {
172
+ let mut features = ExperimentalFeatures :: new ( & client) ;
173
+ features. set_contains_filter ( true ) ;
174
+ let _ = features. update ( ) . await . unwrap ( ) ;
175
+
176
+ let res = features. get ( ) . await . unwrap ( ) ;
177
+ assert ! ( res. contains_filter)
178
+ }
179
+
180
+ #[ meilisearch_test]
181
+ async fn test_experimental_features_set_network ( client : Client ) {
182
+ let mut features = ExperimentalFeatures :: new ( & client) ;
183
+ features. set_network ( true ) ;
184
+ let _ = features. update ( ) . await . unwrap ( ) ;
185
+
186
+ let res = features. get ( ) . await . unwrap ( ) ;
187
+ assert ! ( res. network)
188
+ }
189
+
190
+ #[ meilisearch_test]
191
+ async fn test_experimental_features_set_edit_documents_by_function ( client : Client ) {
192
+ let mut features = ExperimentalFeatures :: new ( & client) ;
193
+ features. set_edit_documents_by_function ( true ) ;
102
194
let _ = features. update ( ) . await . unwrap ( ) ;
103
195
104
- let _res = features. get ( ) . await . unwrap ( ) ;
105
- // assert that the feature has been set once they exist again
196
+ let res = features. get ( ) . await . unwrap ( ) ;
197
+ assert ! ( res . edit_documents_by_function )
106
198
}
107
199
}
0 commit comments