@@ -182,26 +182,29 @@ pub fn rewrite_query<'q>(
182
182
. find ( |( n, _) | * n == "block" )
183
183
. and_then ( |( _, field) | field_constraint ( & ctx. variables , defaults, field) . ok ( ) )
184
184
{
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 ( ) ;
188
188
}
189
- BlockConstraint :: Number ( number) => {
189
+ ( BlockConstraint :: Number ( number) , _ ) => {
190
190
match chain. find ( & UnresolvedBlock :: WithNumber ( number) ) {
191
191
Some ( Block { hash, .. } ) => {
192
- write ! ( buf, "{{ hash: \" {hash}\" }}" ) . unwrap ( )
192
+ write ! ( buf, "{{ hash: \" {hash}\" }}" ) . unwrap ( ) ;
193
193
}
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 ( ) ;
201
196
}
202
- None => write ! ( buf, "{{}}" ) . unwrap ( ) ,
203
197
}
204
198
}
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
+ }
205
208
} ;
206
209
} else if let Some ( block) = & latest_block {
207
210
write ! ( buf, "{{ hash: \" {}\" }}" , block. hash) . unwrap ( ) ;
@@ -517,6 +520,15 @@ mod tests {
517
520
} ,
518
521
"{\n bundle0: bundle(block: { number: 125 }, id: \" 1\" ) {\n ethPriceUSD\n }\n _gateway_probe_: _meta { block { hash number timestamp } }\n }\n " ,
519
522
) ,
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
+ ) ,
520
532
(
521
533
r#"query GetTopSales {
522
534
events(where: { type: "Sale" }, first: 1, orderBy: value, orderDirection: desc) {
0 commit comments