@@ -27,7 +27,7 @@ mod output;
2727pub struct QueryDriver {
2828 db_name : & ' static str ,
2929 url_schemes : & ' static [ & ' static str ] ,
30- expand : fn ( QueryMacroInput , QueryDataSource ) -> crate :: Result < TokenStream > ,
30+ expand : fn ( & Config , QueryMacroInput , QueryDataSource ) -> crate :: Result < TokenStream > ,
3131}
3232
3333impl QueryDriver {
@@ -75,6 +75,7 @@ struct Metadata {
7575 offline : bool ,
7676 database_url : Option < String > ,
7777 offline_dir : Option < String > ,
78+ config : Config ,
7879 workspace_root : Arc < Mutex < Option < PathBuf > > > ,
7980}
8081
@@ -123,17 +124,16 @@ fn init_metadata(manifest_dir: &String) -> crate::Result<Metadata> {
123124 . map ( |s| s. eq_ignore_ascii_case ( "true" ) || s == "1" )
124125 . unwrap_or ( false ) ;
125126
126- let var_name = Config :: try_from_crate_or_default ( ) ?
127- . common
128- . database_url_var ( ) ;
127+ let config = Config :: try_from_crate_or_default ( ) ?;
129128
130- let database_url = env ( var_name ) . ok ( ) . or ( database_url) ;
129+ let database_url = env ( config . common . database_url_var ( ) ) . ok ( ) . or ( database_url) ;
131130
132131 Ok ( Metadata {
133132 manifest_dir,
134133 offline,
135134 database_url,
136135 offline_dir,
136+ config,
137137 workspace_root : Arc :: new ( Mutex :: new ( None ) ) ,
138138 } )
139139}
@@ -197,7 +197,7 @@ pub fn expand_input<'a>(
197197
198198 for driver in drivers {
199199 if data_source. matches_driver ( driver) {
200- return ( driver. expand ) ( input, data_source) ;
200+ return ( driver. expand ) ( & metadata . config , input, data_source) ;
201201 }
202202 }
203203
@@ -219,6 +219,7 @@ pub fn expand_input<'a>(
219219}
220220
221221fn expand_with < DB : DatabaseExt > (
222+ config : & Config ,
222223 input : QueryMacroInput ,
223224 data_source : QueryDataSource ,
224225) -> crate :: Result < TokenStream >
@@ -233,7 +234,7 @@ where
233234 }
234235 } ;
235236
236- expand_with_data ( input, query_data, offline)
237+ expand_with_data ( config , input, query_data, offline)
237238}
238239
239240// marker trait for `Describe` that lets us conditionally require it to be `Serialize + Deserialize`
@@ -251,15 +252,14 @@ struct Warnings {
251252}
252253
253254fn expand_with_data < DB : DatabaseExt > (
255+ config : & Config ,
254256 input : QueryMacroInput ,
255257 data : QueryData < DB > ,
256258 offline : bool ,
257259) -> crate :: Result < TokenStream >
258260where
259261 Describe < DB > : DescribeExt ,
260262{
261- let config = Config :: try_from_crate_or_default ( ) ?;
262-
263263 // validate at the minimum that our args match the query's input parameters
264264 let num_parameters = match data. describe . parameters ( ) {
265265 Some ( Either :: Left ( params) ) => Some ( params. len ( ) ) ,
@@ -278,7 +278,7 @@ where
278278
279279 let mut warnings = Warnings :: default ( ) ;
280280
281- let args_tokens = args:: quote_args ( & input, config, & mut warnings, & data. describe ) ?;
281+ let args_tokens = args:: quote_args ( & input, & config, & mut warnings, & data. describe ) ?;
282282
283283 let query_args = format_ident ! ( "query_args" ) ;
284284
@@ -297,7 +297,8 @@ where
297297 } else {
298298 match input. record_type {
299299 RecordType :: Generated => {
300- let columns = output:: columns_to_rust :: < DB > ( & data. describe , config, & mut warnings) ?;
300+ let columns =
301+ output:: columns_to_rust :: < DB > ( & data. describe , & config, & mut warnings) ?;
301302
302303 let record_name: Type = syn:: parse_str ( "Record" ) . unwrap ( ) ;
303304
0 commit comments