@@ -28,7 +28,7 @@ mod output;
2828pub struct QueryDriver {
2929 db_name : & ' static str ,
3030 url_schemes : & ' static [ & ' static str ] ,
31- expand : fn ( QueryMacroInput , QueryDataSource ) -> crate :: Result < TokenStream > ,
31+ expand : fn ( & Config , QueryMacroInput , QueryDataSource ) -> crate :: Result < TokenStream > ,
3232}
3333
3434impl QueryDriver {
@@ -76,6 +76,7 @@ struct Metadata {
7676 offline : bool ,
7777 database_url : Option < String > ,
7878 offline_dir : Option < String > ,
79+ config : Config ,
7980 workspace_root : Arc < Mutex < Option < PathBuf > > > ,
8081}
8182
@@ -124,17 +125,16 @@ fn init_metadata(manifest_dir: &String) -> crate::Result<Metadata> {
124125 . map ( |s| s. eq_ignore_ascii_case ( "true" ) || s == "1" )
125126 . unwrap_or ( false ) ;
126127
127- let var_name = Config :: try_from_crate_or_default ( ) ?
128- . common
129- . database_url_var ( ) ;
128+ let config = Config :: try_from_crate_or_default ( ) ?;
130129
131- let database_url = env ( var_name ) . ok ( ) . or ( database_url) ;
130+ let database_url = env ( config . common . database_url_var ( ) ) . ok ( ) . or ( database_url) ;
132131
133132 Ok ( Metadata {
134133 manifest_dir,
135134 offline,
136135 database_url,
137136 offline_dir,
137+ config,
138138 workspace_root : Arc :: new ( Mutex :: new ( None ) ) ,
139139 } )
140140}
@@ -198,7 +198,7 @@ pub fn expand_input<'a>(
198198
199199 for driver in drivers {
200200 if data_source. matches_driver ( driver) {
201- return ( driver. expand ) ( input, data_source) ;
201+ return ( driver. expand ) ( & metadata . config , input, data_source) ;
202202 }
203203 }
204204
@@ -220,6 +220,7 @@ pub fn expand_input<'a>(
220220}
221221
222222fn expand_with < DB : DatabaseExt > (
223+ config : & Config ,
223224 input : QueryMacroInput ,
224225 data_source : QueryDataSource ,
225226) -> crate :: Result < TokenStream >
@@ -234,7 +235,7 @@ where
234235 }
235236 } ;
236237
237- expand_with_data ( input, query_data, offline)
238+ expand_with_data ( config , input, query_data, offline)
238239}
239240
240241// marker trait for `Describe` that lets us conditionally require it to be `Serialize + Deserialize`
@@ -252,15 +253,14 @@ struct Warnings {
252253}
253254
254255fn expand_with_data < DB : DatabaseExt > (
256+ config : & Config ,
255257 input : QueryMacroInput ,
256258 data : QueryData < DB > ,
257259 offline : bool ,
258260) -> crate :: Result < TokenStream >
259261where
260262 Describe < DB > : DescribeExt ,
261263{
262- let config = Config :: try_from_crate_or_default ( ) ?;
263-
264264 // validate at the minimum that our args match the query's input parameters
265265 let num_parameters = match data. describe . parameters ( ) {
266266 Some ( Either :: Left ( params) ) => Some ( params. len ( ) ) ,
@@ -279,7 +279,7 @@ where
279279
280280 let mut warnings = Warnings :: default ( ) ;
281281
282- let args_tokens = args:: quote_args ( & input, config, & mut warnings, & data. describe ) ?;
282+ let args_tokens = args:: quote_args ( & input, & config, & mut warnings, & data. describe ) ?;
283283
284284 let query_args = format_ident ! ( "query_args" ) ;
285285
@@ -298,7 +298,8 @@ where
298298 } else {
299299 match input. record_type {
300300 RecordType :: Generated => {
301- let columns = output:: columns_to_rust :: < DB > ( & data. describe , config, & mut warnings) ?;
301+ let columns =
302+ output:: columns_to_rust :: < DB > ( & data. describe , & config, & mut warnings) ?;
302303
303304 let record_name: Type = syn:: parse_str ( "Record" ) . unwrap ( ) ;
304305
0 commit comments