@@ -4,7 +4,8 @@ use reqwest::{
4
4
} ;
5
5
6
6
/// QueryBuilder struct
7
- pub struct Builder < ' a > {
7
+ #[ derive( Clone ) ]
8
+ pub struct Builder {
8
9
method : Method ,
9
10
url : String ,
10
11
schema : Option < String > ,
@@ -15,13 +16,13 @@ pub struct Builder<'a> {
15
16
is_rpc : bool ,
16
17
// sharing a client is a good idea, performance wise
17
18
// the client has to live at least as much as the builder
18
- client : & ' a Client ,
19
+ client : Client ,
19
20
}
20
21
21
22
// TODO: Test Unicode support
22
- impl < ' a > Builder < ' a > {
23
+ impl Builder {
23
24
/// Creates a new `Builder` with the specified `schema`.
24
- pub fn new < T > ( url : T , schema : Option < String > , headers : HeaderMap , client : & ' a Client ) -> Self
25
+ pub fn new < T > ( url : T , schema : Option < String > , headers : HeaderMap , client : Client ) -> Self
25
26
where
26
27
T : Into < String > ,
27
28
{
@@ -584,7 +585,7 @@ mod tests {
584
585
#[ test]
585
586
fn only_accept_json ( ) {
586
587
let client = Client :: new ( ) ;
587
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) ;
588
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) ;
588
589
assert_eq ! (
589
590
builder. headers. get( "Accept" ) . unwrap( ) ,
590
591
HeaderValue :: from_static( "application/json" )
@@ -594,7 +595,7 @@ mod tests {
594
595
#[ test]
595
596
fn auth_with_token ( ) {
596
597
let client = Client :: new ( ) ;
597
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . auth ( "$Up3rS3crET" ) ;
598
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . auth ( "$Up3rS3crET" ) ;
598
599
assert_eq ! (
599
600
builder. headers. get( "Authorization" ) . unwrap( ) ,
600
601
HeaderValue :: from_static( "Bearer $Up3rS3crET" )
@@ -604,7 +605,7 @@ mod tests {
604
605
#[ test]
605
606
fn select_assert_query ( ) {
606
607
let client = Client :: new ( ) ;
607
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . select ( "some_table" ) ;
608
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . select ( "some_table" ) ;
608
609
assert_eq ! ( builder. method, Method :: GET ) ;
609
610
assert_eq ! (
610
611
builder
@@ -617,7 +618,7 @@ mod tests {
617
618
#[ test]
618
619
fn order_assert_query ( ) {
619
620
let client = Client :: new ( ) ;
620
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . order ( "id" ) ;
621
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . order ( "id" ) ;
621
622
assert_eq ! (
622
623
builder
623
624
. queries
@@ -629,7 +630,7 @@ mod tests {
629
630
#[ test]
630
631
fn order_with_options_assert_query ( ) {
631
632
let client = Client :: new ( ) ;
632
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . order_with_options (
633
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . order_with_options (
633
634
"name" ,
634
635
Some ( "cities" ) ,
635
636
true ,
@@ -646,7 +647,7 @@ mod tests {
646
647
#[ test]
647
648
fn limit_assert_range_header ( ) {
648
649
let client = Client :: new ( ) ;
649
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . limit ( 20 ) ;
650
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . limit ( 20 ) ;
650
651
assert_eq ! (
651
652
builder. headers. get( "Range" ) . unwrap( ) ,
652
653
HeaderValue :: from_static( "0-19" )
@@ -656,7 +657,7 @@ mod tests {
656
657
#[ test]
657
658
fn foreign_table_limit_assert_query ( ) {
658
659
let client = Client :: new ( ) ;
659
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client)
660
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client)
660
661
. foreign_table_limit ( 20 , "some_table" ) ;
661
662
assert_eq ! (
662
663
builder
@@ -669,7 +670,7 @@ mod tests {
669
670
#[ test]
670
671
fn range_assert_range_header ( ) {
671
672
let client = Client :: new ( ) ;
672
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . range ( 10 , 20 ) ;
673
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . range ( 10 , 20 ) ;
673
674
assert_eq ! (
674
675
builder. headers. get( "Range" ) . unwrap( ) ,
675
676
HeaderValue :: from_static( "10-20" )
@@ -679,7 +680,7 @@ mod tests {
679
680
#[ test]
680
681
fn single_assert_accept_header ( ) {
681
682
let client = Client :: new ( ) ;
682
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . single ( ) ;
683
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . single ( ) ;
683
684
assert_eq ! (
684
685
builder. headers. get( "Accept" ) . unwrap( ) ,
685
686
HeaderValue :: from_static( "application/vnd.pgrst.object+json" )
@@ -689,7 +690,7 @@ mod tests {
689
690
#[ test]
690
691
fn upsert_assert_prefer_header ( ) {
691
692
let client = Client :: new ( ) ;
692
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . upsert ( "ignored" ) ;
693
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . upsert ( "ignored" ) ;
693
694
assert_eq ! (
694
695
builder. headers. get( "Prefer" ) . unwrap( ) ,
695
696
HeaderValue :: from_static( "return=representation,resolution=merge-duplicates" )
@@ -699,23 +700,23 @@ mod tests {
699
700
#[ test]
700
701
fn not_rpc_should_not_have_flag ( ) {
701
702
let client = Client :: new ( ) ;
702
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client) . select ( "ignored" ) ;
703
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client) . select ( "ignored" ) ;
703
704
assert_eq ! ( builder. is_rpc, false ) ;
704
705
}
705
706
706
707
#[ test]
707
708
fn rpc_should_have_body_and_flag ( ) {
708
709
let client = Client :: new ( ) ;
709
710
let builder =
710
- Builder :: new ( RPC_URL , None , HeaderMap :: new ( ) , & client) . rpc ( "{\" a\" : 1, \" b\" : 2}" ) ;
711
+ Builder :: new ( RPC_URL , None , HeaderMap :: new ( ) , client) . rpc ( "{\" a\" : 1, \" b\" : 2}" ) ;
711
712
assert_eq ! ( builder. body. unwrap( ) , "{\" a\" : 1, \" b\" : 2}" ) ;
712
713
assert_eq ! ( builder. is_rpc, true ) ;
713
714
}
714
715
715
716
#[ test]
716
717
fn chain_filters ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
717
718
let client = Client :: new ( ) ;
718
- let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , & client)
719
+ let builder = Builder :: new ( TABLE_URL , None , HeaderMap :: new ( ) , client)
719
720
. eq ( "username" , "supabot" )
720
721
. neq ( "message" , "hello world" )
721
722
. gte ( "channel_id" , "1" )
0 commit comments