File tree 1 file changed +18
-3
lines changed
1 file changed +18
-3
lines changed Original file line number Diff line number Diff line change 18
18
19
19
use std:: sync:: Arc ;
20
20
21
- use serde:: { Deserialize , Serialize } ;
21
+ use chrono:: NaiveDate ;
22
+ use serde:: { Deserialize , Deserializer , Serialize } ;
22
23
use tracing:: warn;
23
24
24
25
use crate :: {
@@ -210,12 +211,13 @@ pub fn storage_size_labels_date<'a>(stream_name: &'a str, date: &'a str) -> [&'a
210
211
211
212
#[ derive( Debug , Deserialize ) ]
212
213
pub struct StatsParams {
213
- pub date : Option < String > ,
214
+ #[ serde( deserialize_with = "deserialize_date" ) ]
215
+ pub date : Option < NaiveDate > ,
214
216
}
215
217
216
218
impl StatsParams {
217
219
pub fn get_stats ( self , stream_name : & str ) -> Option < Stats > {
218
- let date = self . date ?;
220
+ let date = self . date ?. to_string ( ) ;
219
221
let event_labels = event_labels_date ( stream_name, "json" , & date) ;
220
222
let storage_size_labels = storage_size_labels_date ( stream_name, & date) ;
221
223
let events_ingested = EVENTS_INGESTED_DATE
@@ -238,3 +240,16 @@ impl StatsParams {
238
240
} )
239
241
}
240
242
}
243
+
244
+ pub fn deserialize_date < ' de , D > ( deserializer : D ) -> Result < Option < NaiveDate > , D :: Error >
245
+ where
246
+ D : Deserializer < ' de > ,
247
+ {
248
+ let Some ( s) = Option :: < String > :: deserialize ( deserializer) ? else {
249
+ return Ok ( None ) ;
250
+ } ;
251
+
252
+ NaiveDate :: parse_from_str ( & s, "%Y-%m-%d" )
253
+ . map ( Some )
254
+ . map_err ( serde:: de:: Error :: custom)
255
+ }
You can’t perform that action at this time.
0 commit comments