@@ -29,7 +29,7 @@ use std::{
29
29
use arrow_array:: RecordBatch ;
30
30
use arrow_ipc:: writer:: StreamWriter ;
31
31
use arrow_schema:: { Field , Fields , Schema } ;
32
- use chrono:: { NaiveDateTime , Timelike , Utc } ;
32
+ use chrono:: { NaiveDateTime , Utc } ;
33
33
use derive_more:: { Deref , DerefMut } ;
34
34
use itertools:: Itertools ;
35
35
use parquet:: {
@@ -52,7 +52,7 @@ use crate::{
52
52
storage:: {
53
53
object_storage:: to_bytes, retention:: Retention , StreamType , OBJECT_STORE_DATA_GRANULARITY ,
54
54
} ,
55
- utils:: minute_to_slot ,
55
+ utils:: time :: Minute ,
56
56
LOCK_EXPECT ,
57
57
} ;
58
58
@@ -157,16 +157,15 @@ impl Stream {
157
157
hostname. push_str ( id) ;
158
158
}
159
159
let filename = format ! (
160
- "{}{stream_hash}.date= {}.hour={:02}. minute={}.{}{hostname}.{ARROW_FILE_EXTENSION}" ,
160
+ "{}{stream_hash}.{}.minute={}.{}. {hostname}.{ARROW_FILE_EXTENSION}" ,
161
161
Utc :: now( ) . format( "%Y%m%dT%H%M" ) ,
162
- parsed_timestamp. date( ) ,
163
- parsed_timestamp. hour( ) ,
164
- minute_to_slot( parsed_timestamp. minute( ) , OBJECT_STORE_DATA_GRANULARITY ) . unwrap( ) ,
162
+ parsed_timestamp. format( "date=%Y-%m-%d.hour=%H" ) ,
163
+ Minute :: from( parsed_timestamp) . to_slot( OBJECT_STORE_DATA_GRANULARITY ) ,
165
164
custom_partition_values
166
165
. iter( )
167
166
. sorted_by_key( |v| v. 0 )
168
- . map( |( key, value) | format!( "{key}={value}. " ) )
169
- . join( "" )
167
+ . map( |( key, value) | format!( "{key}={value}" ) )
168
+ . join( ". " )
170
169
) ;
171
170
self . data_path . join ( filename)
172
171
}
@@ -860,11 +859,10 @@ mod tests {
860
859
) ;
861
860
862
861
let expected_path = staging. data_path . join ( format ! (
863
- "{}{stream_hash}.date={}.hour={:02 }.minute={}.{}.{ARROW_FILE_EXTENSION}" ,
862
+ "{}{stream_hash}.{ }.minute={}.{}.{ARROW_FILE_EXTENSION}" ,
864
863
Utc :: now( ) . format( "%Y%m%dT%H%M" ) ,
865
- parsed_timestamp. date( ) ,
866
- parsed_timestamp. hour( ) ,
867
- minute_to_slot( parsed_timestamp. minute( ) , OBJECT_STORE_DATA_GRANULARITY ) . unwrap( ) ,
864
+ parsed_timestamp. format( "date=%Y-%m-%d.hour=%H" ) ,
865
+ Minute :: from( parsed_timestamp) . to_slot( OBJECT_STORE_DATA_GRANULARITY ) ,
868
866
hostname:: get( ) . unwrap( ) . into_string( ) . unwrap( )
869
867
) ) ;
870
868
@@ -895,11 +893,10 @@ mod tests {
895
893
) ;
896
894
897
895
let expected_path = staging. data_path . join ( format ! (
898
- "{}{stream_hash}.date={}.hour={:02 }.minute={}.key1=value1.key2=value2.{}.{ARROW_FILE_EXTENSION}" ,
896
+ "{}{stream_hash}.{ }.minute={}.key1=value1.key2=value2.{}.{ARROW_FILE_EXTENSION}" ,
899
897
Utc :: now( ) . format( "%Y%m%dT%H%M" ) ,
900
- parsed_timestamp. date( ) ,
901
- parsed_timestamp. hour( ) ,
902
- minute_to_slot( parsed_timestamp. minute( ) , OBJECT_STORE_DATA_GRANULARITY ) . unwrap( ) ,
898
+ parsed_timestamp. format( "date=%Y-%m-%d.hour=%H" ) ,
899
+ Minute :: from( parsed_timestamp) . to_slot( OBJECT_STORE_DATA_GRANULARITY ) ,
903
900
hostname:: get( ) . unwrap( ) . into_string( ) . unwrap( )
904
901
) ) ;
905
902
0 commit comments