Skip to content

Commit 48c8922

Browse files
authored
fix: block constraint rewrite fallbacks (#764)
# Release Notes - fix: inefficiencies in processing Agora contexts (#747, #752, dbc5a0b, e4ebfe5)
1 parent 7c3452d commit 48c8922

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

graph-gateway/src/block_constraints.rs

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -182,26 +182,29 @@ pub fn rewrite_query<'q>(
182182
.find(|(n, _)| *n == "block")
183183
.and_then(|(_, field)| field_constraint(&ctx.variables, defaults, field).ok())
184184
{
185-
match constraint {
186-
BlockConstraint::Hash(hash) => {
187-
write!(buf, "{{ hash: \"{hash}\" }}").unwrap()
185+
match (constraint, &latest_block) {
186+
(BlockConstraint::Hash(hash), _) => {
187+
write!(buf, "{{ hash: \"{hash}\" }}").unwrap();
188188
}
189-
BlockConstraint::Number(number) => {
189+
(BlockConstraint::Number(number), _) => {
190190
match chain.find(&UnresolvedBlock::WithNumber(number)) {
191191
Some(Block { hash, .. }) => {
192-
write!(buf, "{{ hash: \"{hash}\" }}").unwrap()
192+
write!(buf, "{{ hash: \"{hash}\" }}").unwrap();
193193
}
194-
None => write!(buf, "{{ number: {number} }}").unwrap(),
195-
}
196-
}
197-
BlockConstraint::Unconstrained | BlockConstraint::NumberGTE(_) => {
198-
match &latest_block {
199-
Some(Block { hash, .. }) => {
200-
write!(buf, "{{ hash: \"{hash}\" }}").unwrap()
194+
None => {
195+
write!(buf, "{{ number: {number} }}").unwrap();
201196
}
202-
None => write!(buf, "{{}}").unwrap(),
203197
}
204198
}
199+
(_, Some(Block { hash, .. })) => {
200+
write!(buf, "{{ hash: \"{hash}\" }}",).unwrap();
201+
}
202+
(BlockConstraint::NumberGTE(number), None) => {
203+
write!(buf, "{{ number_gte: {number} }}").unwrap();
204+
}
205+
(BlockConstraint::Unconstrained, None) => {
206+
write!(buf, "null").unwrap();
207+
}
205208
};
206209
} else if let Some(block) = &latest_block {
207210
write!(buf, "{{ hash: \"{}\" }}", block.hash).unwrap();
@@ -517,6 +520,15 @@ mod tests {
517520
},
518521
"{\n bundle0: bundle(block: { number: 125 }, id: \"1\") {\n ethPriceUSD\n }\n _gateway_probe_: _meta { block { hash number timestamp } }\n}\n",
519522
),
523+
(
524+
r#"{ bundle(block:{number_gte:125}) { ethPriceUSD } }"#,
525+
BlockRequirements {
526+
latest: true,
527+
number_gte: Some(125),
528+
range: None,
529+
},
530+
"{\n bundle(block: { number_gte: 125 }) {\n ethPriceUSD\n }\n _gateway_probe_: _meta { block { hash number timestamp } }\n}\n",
531+
),
520532
(
521533
r#"query GetTopSales {
522534
events(where: { type: "Sale" }, first: 1, orderBy: value, orderDirection: desc) {

0 commit comments

Comments
 (0)