@@ -2,7 +2,7 @@ use etl_config::shared::{BatchConfig, PgConnectionConfig, PipelineConfig};
22use serde:: { Deserialize , Serialize } ;
33use utoipa:: ToSchema ;
44
5- use crate :: configs:: store:: Store ;
5+ use crate :: configs:: { log :: LogLevel , store:: Store } ;
66
77const DEFAULT_BATCH_MAX_SIZE : usize = 100000 ;
88const DEFAULT_BATCH_MAX_FILL_MS : u64 = 10000 ;
@@ -41,6 +41,7 @@ pub struct FullApiPipelineConfig {
4141 #[ schema( example = 4 ) ]
4242 #[ serde( skip_serializing_if = "Option::is_none" ) ]
4343 pub max_table_sync_workers : Option < u16 > ,
44+ pub log_level : Option < LogLevel > ,
4445}
4546
4647impl From < StoredPipelineConfig > for FullApiPipelineConfig {
@@ -54,6 +55,7 @@ impl From<StoredPipelineConfig> for FullApiPipelineConfig {
5455 table_error_retry_delay_ms : Some ( value. table_error_retry_delay_ms ) ,
5556 table_error_retry_max_attempts : Some ( value. table_error_retry_max_attempts ) ,
5657 max_table_sync_workers : Some ( value. max_table_sync_workers ) ,
58+ log_level : value. log_level ,
5759 }
5860 }
5961}
@@ -75,6 +77,8 @@ pub struct PartialApiPipelineConfig {
7577 #[ schema( example = 4 ) ]
7678 #[ serde( skip_serializing_if = "Option::is_none" ) ]
7779 pub max_table_sync_workers : Option < u16 > ,
80+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
81+ pub log_level : Option < LogLevel > ,
7882}
7983
8084#[ derive( Debug , Clone , Serialize , Deserialize ) ]
@@ -85,6 +89,7 @@ pub struct StoredPipelineConfig {
8589 #[ serde( default = "default_table_error_retry_max_attempts" ) ]
8690 pub table_error_retry_max_attempts : u32 ,
8791 pub max_table_sync_workers : u16 ,
92+ pub log_level : Option < LogLevel > ,
8893}
8994
9095impl StoredPipelineConfig {
@@ -129,6 +134,8 @@ impl StoredPipelineConfig {
129134 if let Some ( value) = partial. max_table_sync_workers {
130135 self . max_table_sync_workers = value;
131136 }
137+
138+ self . log_level = partial. log_level
132139 }
133140}
134141
@@ -159,6 +166,7 @@ impl From<FullApiPipelineConfig> for StoredPipelineConfig {
159166 max_table_sync_workers : value
160167 . max_table_sync_workers
161168 . unwrap_or ( DEFAULT_MAX_TABLE_SYNC_WORKERS ) ,
169+ log_level : value. log_level ,
162170 }
163171 }
164172}
@@ -179,6 +187,7 @@ mod tests {
179187 table_error_retry_delay_ms : 2000 ,
180188 table_error_retry_max_attempts : 7 ,
181189 max_table_sync_workers : 4 ,
190+ log_level : None ,
182191 } ;
183192
184193 let json = serde_json:: to_string ( & config) . unwrap ( ) ;
@@ -208,6 +217,7 @@ mod tests {
208217 table_error_retry_delay_ms : None ,
209218 table_error_retry_max_attempts : None ,
210219 max_table_sync_workers : None ,
220+ log_level : Some ( LogLevel :: Debug ) ,
211221 } ;
212222
213223 let stored: StoredPipelineConfig = full_config. clone ( ) . into ( ) ;
@@ -224,6 +234,7 @@ mod tests {
224234 table_error_retry_delay_ms : None ,
225235 table_error_retry_max_attempts : None ,
226236 max_table_sync_workers : None ,
237+ log_level : None ,
227238 } ;
228239
229240 let stored: StoredPipelineConfig = full_config. into ( ) ;
@@ -255,6 +266,7 @@ mod tests {
255266 table_error_retry_delay_ms : 1000 ,
256267 table_error_retry_max_attempts : 3 ,
257268 max_table_sync_workers : 2 ,
269+ log_level : None ,
258270 } ;
259271
260272 let partial = PartialApiPipelineConfig {
@@ -266,6 +278,7 @@ mod tests {
266278 table_error_retry_delay_ms : Some ( 5000 ) ,
267279 table_error_retry_max_attempts : Some ( 9 ) ,
268280 max_table_sync_workers : None ,
281+ log_level : None ,
269282 } ;
270283
271284 stored. merge ( partial) ;
0 commit comments