@@ -8,7 +8,8 @@ use windmill_common::error::to_anyhow;
8
8
use windmill_common:: worker:: Connection ;
9
9
use windmill_common:: { error:: Error , worker:: to_raw_value} ;
10
10
use windmill_parser_sql:: {
11
- parse_bigquery_sig, parse_db_resource, parse_sql_blocks, parse_sql_statement_named_params,
11
+ parse_bigquery_sig, parse_db_resource, parse_s3_mode, parse_sql_blocks,
12
+ parse_sql_statement_named_params,
12
13
} ;
13
14
use windmill_queue:: CanceledBy ;
14
15
@@ -65,6 +66,12 @@ struct BigqueryError {
65
66
message : String ,
66
67
}
67
68
69
+ struct S3Mode < ' a > {
70
+ client : & ' a AuthedClient ,
71
+ object_key : String ,
72
+ storage : Option < String > ,
73
+ }
74
+
68
75
fn do_bigquery_inner < ' a > (
69
76
query : & ' a str ,
70
77
all_statement_values : & ' a HashMap < String , Value > ,
@@ -74,6 +81,7 @@ fn do_bigquery_inner<'a>(
74
81
column_order : Option < & ' a mut Option < Vec < String > > > ,
75
82
skip_collect : bool ,
76
83
http_client : & ' a Client ,
84
+ s3 : & Option < S3Mode > ,
77
85
) -> windmill_common:: error:: Result < BoxFuture < ' a , windmill_common:: error:: Result < Box < RawValue > > > > {
78
86
let param_names = parse_sql_statement_named_params ( query, '@' ) ;
79
87
@@ -113,6 +121,8 @@ fn do_bigquery_inner<'a>(
113
121
Ok ( _) => {
114
122
if skip_collect {
115
123
return Ok ( to_raw_value ( & Value :: Array ( vec ! [ ] ) ) ) ;
124
+ } else if let Some ( ref s3) = s3 {
125
+ // s3.client.get("", query)
116
126
} else {
117
127
let result = response. json :: < BigqueryResponse > ( ) . await . map_err ( |e| {
118
128
Error :: ExecutionErr ( format ! (
@@ -220,6 +230,11 @@ pub async fn do_bigquery(
220
230
let bigquery_args = build_args_values ( job, client, conn) . await ?;
221
231
222
232
let inline_db_res_path = parse_db_resource ( & query) ;
233
+ let s3 = parse_s3_mode ( & query) . map ( |s3_mode| S3Mode {
234
+ client : & client,
235
+ storage : s3_mode. storage ,
236
+ object_key : s3_mode. object_key ,
237
+ } ) ;
223
238
224
239
let db_arg = if let Some ( inline_db_res_path) = inline_db_res_path {
225
240
Some (
@@ -332,6 +347,7 @@ pub async fn do_bigquery(
332
347
None ,
333
348
annotations. return_last_result && i < queries. len ( ) - 1 ,
334
349
& http_client,
350
+ & s3,
335
351
)
336
352
} )
337
353
. collect :: < windmill_common:: error:: Result < Vec < _ > > > ( ) ?;
@@ -361,6 +377,7 @@ pub async fn do_bigquery(
361
377
Some ( column_order) ,
362
378
false ,
363
379
& http_client,
380
+ & s3,
364
381
) ?
365
382
} ;
366
383
0 commit comments