@@ -306,11 +306,18 @@ pub trait ObjectStorage: Debug + Send + Sync + 'static {
306306    } 
307307
308308    async  fn  list_dates ( & self ,  stream_name :  & str )  -> Result < Vec < String > ,  ObjectStorageError > ; 
309+     /// Lists the immediate “hour=” partition directories under the given date. 
310+ /// Only immediate child entries named `hour=HH` should be returned (no trailing slash). 
311+ /// `HH` must be zero-padded two-digit numerals (`"hour=00"` through `"hour=23"`). 
309312async  fn  list_hours ( 
310313        & self , 
311314        stream_name :  & str , 
312315        date :  & str , 
313316    )  -> Result < Vec < String > ,  ObjectStorageError > ; 
317+ 
318+     /// Lists the immediate “minute=” partition directories under the given date/hour. 
319+ /// Only immediate child entries named `minute=MM` should be returned (no trailing slash). 
320+ /// `MM` must be zero-padded two-digit numerals (`"minute=00"` through `"minute=59"`). 
314321async  fn  list_minutes ( 
315322        & self , 
316323        stream_name :  & str , 
@@ -975,11 +982,7 @@ pub trait ObjectStorage: Debug + Send + Sync + 'static {
975982            // Create timestamp from date, hour, and minute with seconds hardcoded to 00 
976983            let  naive_datetime = parsed_date
977984                . and_hms_opt ( target_hour_value,  target_minute,  0 ) 
978-                 . unwrap_or_else ( || { 
979-                     parsed_date
980-                         . and_hms_opt ( target_hour_value,  target_minute,  0 ) 
981-                         . unwrap_or_else ( || parsed_date. and_hms_opt ( 0 ,  0 ,  0 ) . unwrap ( ) ) 
982-                 } ) ; 
985+                 . unwrap_or_else ( || parsed_date. and_hms_opt ( 0 ,  0 ,  0 ) . unwrap ( ) ) ; 
983986
984987            return  Ok ( Some ( DateTime :: from_naive_utc_and_offset ( 
985988                naive_datetime, 
0 commit comments