@@ -867,15 +867,26 @@ pub struct Plugins {
867
867
pub prewarmer : Option < Prewarmer > ,
868
868
}
869
869
870
+ pub trait Plugin {
871
+ fn is_enabled ( & self ) -> bool ;
872
+ }
873
+
870
874
impl std:: fmt:: Display for Plugins {
871
875
fn fmt ( & self , f : & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
876
+ fn is_enabled < T : Plugin > ( arg : Option < & T > ) -> bool {
877
+ if let Some ( ref arg) = arg {
878
+ arg. is_enabled ( )
879
+ } else {
880
+ false
881
+ }
882
+ }
872
883
write ! (
873
884
f,
874
885
"interceptor: {}, table_access: {}, query_logger: {}, prewarmer: {}" ,
875
- self . intercept. is_some ( ) ,
876
- self . table_access. is_some ( ) ,
877
- self . query_logger. is_some ( ) ,
878
- self . prewarmer. is_some ( ) ,
886
+ is_enabled ( self . intercept. as_ref ( ) ) ,
887
+ is_enabled ( self . table_access. as_ref ( ) ) ,
888
+ is_enabled ( self . query_logger. as_ref ( ) ) ,
889
+ is_enabled ( self . prewarmer. as_ref ( ) ) ,
879
890
)
880
891
}
881
892
}
@@ -886,23 +897,47 @@ pub struct Intercept {
886
897
pub queries : BTreeMap < String , Query > ,
887
898
}
888
899
900
+ impl Plugin for Intercept {
901
+ fn is_enabled ( & self ) -> bool {
902
+ self . enabled
903
+ }
904
+ }
905
+
889
906
#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq , Default , Hash , Eq ) ]
890
907
pub struct TableAccess {
891
908
pub enabled : bool ,
892
909
pub tables : Vec < String > ,
893
910
}
894
911
912
+ impl Plugin for TableAccess {
913
+ fn is_enabled ( & self ) -> bool {
914
+ self . enabled
915
+ }
916
+ }
917
+
895
918
#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq , Default , Hash , Eq ) ]
896
919
pub struct QueryLogger {
897
920
pub enabled : bool ,
898
921
}
899
922
923
+ impl Plugin for QueryLogger {
924
+ fn is_enabled ( & self ) -> bool {
925
+ self . enabled
926
+ }
927
+ }
928
+
900
929
#[ derive( Serialize , Deserialize , Debug , Clone , PartialEq , Default , Hash , Eq ) ]
901
930
pub struct Prewarmer {
902
931
pub enabled : bool ,
903
932
pub queries : Vec < String > ,
904
933
}
905
934
935
+ impl Plugin for Prewarmer {
936
+ fn is_enabled ( & self ) -> bool {
937
+ self . enabled
938
+ }
939
+ }
940
+
906
941
impl Intercept {
907
942
pub fn substitute ( & mut self , db : & str , user : & str ) {
908
943
for ( _, query) in self . queries . iter_mut ( ) {
0 commit comments