@@ -7,6 +7,7 @@ use alloy::{
77use anyhow:: anyhow;
88use arrow:: { array:: RecordBatch , datatypes:: Schema } ;
99use futures03:: future:: try_join_all;
10+ use itertools:: Itertools ;
1011use lazy_regex:: regex_is_match;
1112use semver:: Version ;
1213use serde:: Deserialize ;
@@ -86,14 +87,7 @@ impl RawDataSource {
8687 . map_err ( |e| e. source_context ( "invalid `source`" ) ) ?;
8788
8889 let transformer = transformer
89- . resolve (
90- & logger,
91- link_resolver,
92- amp_client,
93- input_schema,
94- & network,
95- & source,
96- )
90+ . resolve ( & logger, link_resolver, amp_client, input_schema, & source)
9791 . await
9892 . map_err ( |e| e. source_context ( "invalid `transformer`" ) ) ?;
9993
@@ -159,6 +153,12 @@ impl RawSource {
159153 }
160154 Self :: validate_tables ( & tables) ?;
161155
156+ let dataset = normalize_sql_ident ( & dataset) ;
157+ let tables = tables
158+ . into_iter ( )
159+ . map ( |table| normalize_sql_ident ( & table) )
160+ . collect_vec ( ) ;
161+
162162 let address = address. unwrap_or ( Address :: ZERO ) ;
163163 let start_block = start_block. unwrap_or ( BlockNumber :: MIN ) ;
164164 let end_block = end_block. unwrap_or ( BlockNumber :: MAX ) ;
@@ -232,7 +232,6 @@ impl RawTransformer {
232232 link_resolver : & dyn LinkResolver ,
233233 amp_client : & impl amp:: Client ,
234234 input_schema : Option < & InputSchema > ,
235- network : & str ,
236235 source : & Source ,
237236 ) -> Result < Transformer , Error > {
238237 let Self {
@@ -248,7 +247,6 @@ impl RawTransformer {
248247 link_resolver,
249248 amp_client,
250249 input_schema,
251- network,
252250 tables,
253251 source,
254252 & abis,
@@ -306,7 +304,6 @@ impl RawTransformer {
306304 link_resolver : & dyn LinkResolver ,
307305 amp_client : & impl amp:: Client ,
308306 input_schema : Option < & InputSchema > ,
309- network : & str ,
310307 tables : Vec < RawTable > ,
311308 source : & Source ,
312309 abis : & [ Abi ] ,
@@ -335,7 +332,6 @@ impl RawTransformer {
335332 link_resolver,
336333 amp_client,
337334 input_schema,
338- network,
339335 source,
340336 abis,
341337 )
@@ -431,7 +427,6 @@ impl RawTable {
431427 link_resolver : & dyn LinkResolver ,
432428 amp_client : & impl amp:: Client ,
433429 input_schema : Option < & InputSchema > ,
434- network : & str ,
435430 source : & Source ,
436431 abis : & [ Abi ] ,
437432 ) -> Result < Table , Error > {
@@ -459,7 +454,6 @@ impl RawTable {
459454 logger,
460455 amp_client,
461456 input_schema,
462- network,
463457 source,
464458 query,
465459 schema. clone ( ) ,
@@ -557,7 +551,6 @@ impl RawTable {
557551 logger : & Logger ,
558552 amp_client : & impl amp:: Client ,
559553 input_schema : Option < & InputSchema > ,
560- network : & str ,
561554 source : & Source ,
562555 query : ValidQuery ,
563556 schema : Schema ,
@@ -586,15 +579,7 @@ impl RawTable {
586579 let context_sources_iter = source
587580 . tables
588581 . iter ( )
589- . map ( |table| ( source. dataset . as_str ( ) , table. as_str ( ) ) )
590- // TODO: Replace hardcoded values with schema metadata sources when available
591- . chain ( match network {
592- "ethereum-mainnet" => vec ! [ ( "edgeandnode/ethereum_mainnet" , "blocks" ) ] ,
593- "base-mainnet" => vec ! [ ( "edgeandnode/base_mainnet" , "blocks" ) ] ,
594- "base-sepolia" => vec ! [ ( "edgeandnode/base_sepolia" , "blocks" ) ] ,
595- "arbitrum-one" => vec ! [ ( "edgeandnode/arbitrum_one" , "blocks" ) ] ,
596- _ => vec ! [ ] ,
597- } ) ;
582+ . map ( |table| ( source. dataset . as_str ( ) , table. as_str ( ) ) ) ;
598583
599584 for ( dataset, table) in context_sources_iter {
600585 let context_logger = logger. new ( slog:: o!(
@@ -719,3 +704,10 @@ fn validate_ident(s: &str) -> Result<(), Error> {
719704 }
720705 Ok ( ( ) )
721706}
707+
708+ fn normalize_sql_ident ( s : & str ) -> String {
709+ match validate_ident ( s) {
710+ Ok ( ( ) ) => s. to_lowercase ( ) ,
711+ Err ( _e) => sqlparser_latest:: ast:: Ident :: with_quote ( '"' , s) . to_string ( ) ,
712+ }
713+ }
0 commit comments