1- use std:: str:: FromStr ;
21use async_trait:: async_trait;
3- use chrono:: { DateTime , Datelike , Timelike , Utc } ;
4- use cron:: Schedule ;
52use base:: extract_flow_setting_field;
63use base:: runner:: { ServerContext , ServerRunner } ;
74use base:: store:: FlowIdentifyResult ;
85use base:: traits:: { IdentifiableFlow , LoadConfig , Server } ;
6+ use chrono:: { DateTime , Datelike , Timelike , Utc } ;
7+ use cron:: Schedule ;
8+ use std:: str:: FromStr ;
99
1010#[ derive( Default ) ]
11- struct Cron {
12- }
11+ struct Cron { }
1312
1413#[ derive( Clone ) ]
1514struct CronConfig { }
@@ -28,36 +27,41 @@ async fn main() {
2827}
2928
3029struct Time {
31- now : DateTime < Utc >
30+ now : DateTime < Utc > ,
3231}
3332
3433impl IdentifiableFlow for Time {
3534 fn identify ( & self , flow : & tucana:: shared:: ValidationFlow ) -> bool {
36- let Some ( minute) = extract_flow_setting_field ( & flow. settings , "CRON_MINUTE" , "minute" ) else {
35+ let Some ( minute) = extract_flow_setting_field ( & flow. settings , "CRON_MINUTE" , "minute" )
36+ else {
3737 return false ;
3838 } ;
3939 let Some ( hour) = extract_flow_setting_field ( & flow. settings , "CRON_HOUR" , "hour" ) else {
4040 return false ;
4141 } ;
42- let Some ( dom) = extract_flow_setting_field ( & flow. settings , "CRON_DAY_OF_MONTH" , "day_of_month" ) else {
42+ let Some ( dom) =
43+ extract_flow_setting_field ( & flow. settings , "CRON_DAY_OF_MONTH" , "day_of_month" )
44+ else {
4345 return false ;
4446 } ;
4547 let Some ( month) = extract_flow_setting_field ( & flow. settings , "CRON_MONTH" , "month" ) else {
4648 return false ;
4749 } ;
48- let Some ( dow) = extract_flow_setting_field ( & flow. settings , "CRON_DAY_OF_WEEK" , "day_of_week" ) else {
50+ let Some ( dow) =
51+ extract_flow_setting_field ( & flow. settings , "CRON_DAY_OF_WEEK" , "day_of_week" )
52+ else {
4953 return false ;
5054 } ;
5155
5256 let expression = format ! ( "* {} {} {} {} {}" , minute, hour, dom, month, dow) ;
5357 let schedule = Schedule :: from_str ( expression. as_str ( ) ) . unwrap ( ) ;
5458 let next = schedule. upcoming ( Utc ) . next ( ) . unwrap ( ) ;
5559
56- self . now . year ( ) == next. year ( ) &&
57- self . now . month ( ) == next. month ( ) &&
58- self . now . day ( ) == next. day ( ) &&
59- self . now . hour ( ) == next. hour ( ) &&
60- self . now . minute ( ) == next. minute ( )
60+ self . now . year ( ) == next. year ( )
61+ && self . now . month ( ) == next. month ( )
62+ && self . now . day ( ) == next. day ( )
63+ && self . now . hour ( ) == next. hour ( )
64+ && self . now . minute ( ) == next. minute ( )
6165 }
6266}
6367
@@ -79,16 +83,24 @@ impl Server<CronConfig> for Cron {
7983 tokio:: time:: sleep ( until_next. to_std ( ) ?) . await ;
8084
8185 let time = Time { now } ;
82- match ctx. adapter_store . get_possible_flow_match ( pattern. to_string ( ) , time) . await {
86+ match ctx
87+ . adapter_store
88+ . get_possible_flow_match ( pattern. to_string ( ) , time)
89+ . await
90+ {
8391 FlowIdentifyResult :: None => { }
8492 FlowIdentifyResult :: Single ( flow) => {
85- ctx. adapter_store . validate_and_execute_flow ( flow, None , false ) . await ;
93+ ctx. adapter_store
94+ . validate_and_execute_flow ( flow, None , false )
95+ . await ;
8696 }
8797 FlowIdentifyResult :: Multiple ( flows) => {
8898 for flow in flows {
89- ctx. adapter_store . validate_and_execute_flow ( flow, None , false ) . await ;
99+ ctx. adapter_store
100+ . validate_and_execute_flow ( flow, None , false )
101+ . await ;
90102 }
91- } ,
103+ }
92104 }
93105 }
94106 }
0 commit comments