Skip to content

Commit bc6330b

Browse files
committed
Refactor root field limit rule to use visitor pattern
1 parent a36ff71 commit bc6330b

1 file changed

Lines changed: 8 additions & 16 deletions

File tree

  • plugin_examples/root_field_limit/src

plugin_examples/root_field_limit/src/lib.rs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use hive_router::query_planner::ast::selection_item::SelectionItem;
33
use hive_router::{
44
async_trait,
55
graphql_tools::{
6-
ast::{visit_document, OperationVisitor, OperationVisitorContext},
6+
ast::{OperationVisitor, OperationVisitorContext},
77
static_graphql,
88
validation::{
99
rules::ValidationRule,
@@ -135,23 +135,15 @@ impl<'a> OperationVisitor<'a, ValidationErrorContext> for RootFieldSelections {
135135
}
136136

137137
impl ValidationRule for RootFieldLimitRule {
138-
fn error_code<'a>(&self) -> &'a str {
138+
fn error_code(&self) -> &'static str {
139139
"TOO_MANY_ROOT_FIELDS"
140140
}
141-
fn validate(
142-
&self,
143-
ctx: &mut OperationVisitorContext<'_>,
144-
error_collector: &mut ValidationErrorContext,
145-
) {
146-
visit_document(
147-
&mut RootFieldSelections {
148-
max_root_fields: self.max_root_fields,
149-
count: 0,
150-
},
151-
ctx.operation,
152-
ctx,
153-
error_collector,
154-
);
141+
142+
fn visitor<'a>(&self) -> hive_router::graphql_tools::validation::rules::ValidationVisitor<'a> {
143+
Box::new(RootFieldSelections {
144+
max_root_fields: self.max_root_fields,
145+
count: 0,
146+
})
155147
}
156148
}
157149

0 commit comments

Comments
 (0)