@@ -8,7 +8,13 @@ use serde::{Deserialize, Serialize};
88/// Struct representing the experimental features result from the API.
99#[ derive( Clone , Debug , Deserialize ) ]
1010#[ 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+ }
1218
1319/// Struct representing the experimental features request.
1420///
@@ -28,12 +34,30 @@ pub struct ExperimentalFeaturesResult {}
2834pub struct ExperimentalFeatures < ' a , Http : HttpClient > {
2935 #[ serde( skip_serializing) ]
3036 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 > ,
3148}
3249
3350impl < ' a , Http : HttpClient > ExperimentalFeatures < ' a , Http > {
3451 #[ must_use]
3552 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+ }
3761 }
3862
3963 /// Get all the experimental features
@@ -88,6 +112,34 @@ impl<'a, Http: HttpClient> ExperimentalFeatures<'a, Http> {
88112 )
89113 . await
90114 }
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+ }
91143}
92144
93145#[ cfg( test) ]
@@ -96,12 +148,52 @@ mod tests {
96148 use meilisearch_test_macro:: meilisearch_test;
97149
98150 #[ 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 ) ;
102194 let _ = features. update ( ) . await . unwrap ( ) ;
103195
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 )
106198 }
107199}
0 commit comments