@@ -182,7 +182,7 @@ async fn load_gh_event(file_path: PathBuf) -> Vec<EventTableStruct> {
182182
183183    let  batch:  Vec < EventTableStruct >  = reader
184184        . lines ( ) 
185-         . map_while ( Result :: ok) 
185+         . filter_map ( Result :: ok) 
186186        . filter_map ( |line| match  serde_json:: from_str :: < Event > ( & line)  { 
187187            Ok ( event)  => Some ( event) , 
188188            Err ( e)  => { 
@@ -235,32 +235,29 @@ fn check_is_bot(login: &str) -> bool {
235235    . any ( |suffix| login. ends_with ( suffix) ) 
236236} 
237237
238- fn  format_event_module ( event :  Event )  -> Option < EventTableStruct >  { 
239-     let  filter_out_payload =
240-         env:: var ( "FILTER_OUT_PAYLOAD" ) . is_ok_and ( |v| v. to_lowercase ( )  == "true" ) ; 
241-     let  filter_out_body = env:: var ( "FILTER_OUT_BODY" ) . is_ok_and ( |v| v. to_lowercase ( )  == "true" ) ; 
242-     let  filter_out_bot = env:: var ( "FILTER_OUT_BOT" ) . is_ok_and ( |v| v. to_lowercase ( )  == "true" ) ; 
243- 
244-     let  actor = event. actor . clone ( ) ; 
238+ fn  get_env_bool ( key :  & str )  -> bool  { 
239+     env:: var ( key) . is_ok_and ( |v| v. to_lowercase ( )  == "true" ) 
240+ } 
245241
246-     if  filter_out_bot && check_is_bot ( & actor. login )  { 
242+ fn  format_event_module ( event :  Event )  -> Option < EventTableStruct >  { 
243+     if  get_env_bool ( "FILTER_OUT_BOT" )  && check_is_bot ( & event. actor . login )  { 
247244        return  None ; 
248245    } 
249246
250-     let  body_raw = match  event. payload . clone ( )  { 
251-         Some ( data)  => match  data. specific  { 
252-             Some ( IssuesEvent ( payload) )  => payload. issue . body , 
253-             Some ( IssueCommentEvent ( payload) )  => payload. comment . body , 
254-             Some ( CommitCommentEvent ( payload) )  => payload. comment . body , 
255-             Some ( PullRequestEvent ( payload) )  => payload. pull_request . body , 
256-             Some ( PullRequestReviewCommentEvent ( payload) )  => payload. comment . body , 
257-             Some ( ReleaseEvent ( payload) )  => payload. release . body , 
247+     let  body_raw = event
248+         . payload 
249+         . as_ref ( ) 
250+         . and_then ( |data| match  & data. specific  { 
251+             Some ( IssuesEvent ( payload) )  => payload. issue . body . as_ref ( ) , 
252+             Some ( IssueCommentEvent ( payload) )  => payload. comment . body . as_ref ( ) , 
253+             Some ( CommitCommentEvent ( payload) )  => payload. comment . body . as_ref ( ) , 
254+             Some ( PullRequestEvent ( payload) )  => payload. pull_request . body . as_ref ( ) , 
255+             Some ( PullRequestReviewCommentEvent ( payload) )  => payload. comment . body . as_ref ( ) , 
256+             Some ( ReleaseEvent ( payload) )  => payload. release . body . as_ref ( ) , 
258257            _ => None , 
259-         } , 
260-         None  => None , 
261-     } ; 
258+         } ) ; 
262259
263-     let  body = if  !filter_out_body  { 
260+     let  body = if  !get_env_bool ( "FILTER_OUT_BODY" )  { 
264261        body_raw. map ( |b| { 
265262            b. chars ( ) 
266263                . filter ( |& c| !c. is_control ( )  || c. is_whitespace ( ) ) 
@@ -270,15 +267,15 @@ fn format_event_module(event: Event) -> Option<EventTableStruct> {
270267        None 
271268    } ; 
272269
273-     let  payload = if  filter_out_payload { 
274-         String :: from ( "{}" ) 
275-     }  else  { 
270+     let  payload = if  !get_env_bool ( "FILTER_OUT_PAYLOAD" )  { 
276271        serde_json:: to_string ( & event. payload ) . unwrap_or_default ( ) 
272+     }  else  { 
273+         "{}" . to_string ( ) 
277274    } ; 
278275
279-     let  event_struct =  EventTableStruct  { 
276+     Some ( EventTableStruct  { 
280277        id :  Decimal :: from_str ( & event. id ) 
281-             . unwrap_or ( Decimal :: zero ( ) ) 
278+             . unwrap_or_default ( ) 
282279            . to_u64 ( ) 
283280            . unwrap_or ( 0 ) , 
284281        actor_id :  * event. actor . id , 
@@ -291,6 +288,5 @@ fn format_event_module(event: Event) -> Option<EventTableStruct> {
291288        body, 
292289        payload, 
293290        created_at :  event. created_at , 
294-     } ; 
295-     Some ( event_struct) 
291+     } ) 
296292} 
0 commit comments