@@ -6,154 +6,82 @@ mod sqlx_postgres_tests {
66
77 #[ sqlx:: test]
88 async fn datetime ( db_pool : PgPool ) {
9+ #[ derive( sqlx:: FromRow ) ]
10+ struct TimestampRow {
11+ timestamp : DateTime ,
12+ }
913 let datetime = DateTime :: from_ymdhms ( 2024 , 1 , 2 , 10 , 30 , 40 )
1014 . unwrap ( )
1115 . set_nano ( 123_456_789 )
1216 . unwrap ( ) ;
13- let insert_result = sqlx:: query! (
17+ let insert_result: Result < TimestampRow , sqlx :: Error > = sqlx:: query_as (
1418 r#"
1519 INSERT INTO astrolabe_tests (timestamp) VALUES ($1)
16- RETURNING timestamp as "timestamp: DateTime"
20+ RETURNING timestamp
1721 "# ,
18- datetime as DateTime
1922 )
23+ . bind ( datetime)
2024 . fetch_one ( & db_pool)
2125 . await ;
2226
2327 assert ! ( insert_result. is_ok( ) ) ;
2428
25- let datetime = insert_result. unwrap ( ) . timestamp . unwrap ( ) ;
29+ let datetime = insert_result. unwrap ( ) . timestamp ;
2630
2731 assert_eq ! (
2832 "2024-01-02T10:30:40.123456000Z" ,
2933 datetime. format_rfc3339( Precision :: Nanos )
3034 ) ;
3135 }
3236
33- #[ sqlx:: test]
34- async fn datetime_array ( db_pool : PgPool ) {
35- let datetime_1 = DateTime :: from_ymdhms ( 2024 , 1 , 2 , 10 , 30 , 40 )
36- . unwrap ( )
37- . set_nano ( 123_456_789 )
38- . unwrap ( ) ;
39- let datetime_2 = DateTime :: from_ymdhms ( 1980 , 1 , 2 , 10 , 30 , 40 )
40- . unwrap ( )
41- . set_nano ( 123_456_789 )
42- . unwrap ( ) ;
43- let insert_result = sqlx:: query!(
44- r#"
45- INSERT INTO astrolabe_tests (timestamps) VALUES ($1)
46- RETURNING timestamps as "timestamps: Vec<DateTime>"
47- "# ,
48- vec![ datetime_1, datetime_2] as Vec <DateTime >
49- )
50- . fetch_one ( & db_pool)
51- . await ;
52-
53- assert ! ( insert_result. is_ok( ) ) ;
54-
55- let datetimes = insert_result. unwrap ( ) . timestamps . unwrap ( ) ;
56-
57- assert_eq ! (
58- "2024-01-02T10:30:40.123456000Z" ,
59- datetimes[ 0 ] . format_rfc3339( Precision :: Nanos )
60- ) ;
61- assert_eq ! (
62- "1980-01-02T10:30:40.123456000Z" ,
63- datetimes[ 1 ] . format_rfc3339( Precision :: Nanos )
64- ) ;
65- }
66-
6737 #[ sqlx:: test]
6838 async fn date ( db_pool : PgPool ) {
39+ #[ derive( sqlx:: FromRow ) ]
40+ struct DateRow {
41+ date : Date ,
42+ }
6943 let date = Date :: from_ymd ( 2024 , 1 , 2 ) . unwrap ( ) ;
70- let insert_result = sqlx:: query! (
44+ let insert_result: Result < DateRow , sqlx :: Error > = sqlx:: query_as (
7145 r#"
7246 INSERT INTO astrolabe_tests (date) VALUES ($1)
73- RETURNING date as "date: Date"
47+ RETURNING date
7448 "# ,
75- date as Date
7649 )
50+ . bind ( date)
7751 . fetch_one ( & db_pool)
7852 . await ;
7953
8054 assert ! ( insert_result. is_ok( ) ) ;
8155
82- let date = insert_result. unwrap ( ) . date . unwrap ( ) ;
56+ let date = insert_result. unwrap ( ) . date ;
8357
8458 assert_eq ! ( "2024/01/02" , date. format( "yyyy/MM/dd" ) ) ;
8559 }
8660
87- #[ sqlx:: test]
88- async fn date_array ( db_pool : PgPool ) {
89- let date_1 = Date :: from_ymd ( 2024 , 1 , 2 ) . unwrap ( ) ;
90- let date_2 = Date :: from_ymd ( 1980 , 1 , 2 ) . unwrap ( ) ;
91- let insert_result = sqlx:: query!(
92- r#"
93- INSERT INTO astrolabe_tests (dates) VALUES ($1)
94- RETURNING dates as "dates: Vec<Date>"
95- "# ,
96- vec![ date_1, date_2] as Vec <Date >
97- )
98- . fetch_one ( & db_pool)
99- . await ;
100-
101- assert ! ( insert_result. is_ok( ) ) ;
102-
103- let dates = insert_result. unwrap ( ) . dates . unwrap ( ) ;
104-
105- assert_eq ! ( "2024/01/02" , dates[ 0 ] . format( "yyyy/MM/dd" ) ) ;
106- assert_eq ! ( "1980/01/02" , dates[ 1 ] . format( "yyyy/MM/dd" ) ) ;
107- }
108-
10961 #[ sqlx:: test]
11062 async fn time ( db_pool : PgPool ) {
63+ #[ derive( sqlx:: FromRow ) ]
64+ struct TimeRow {
65+ time : Time ,
66+ }
11167 let time = Time :: from_hms ( 10 , 30 , 40 )
11268 . unwrap ( )
11369 . set_nano ( 123_456_789 )
11470 . unwrap ( ) ;
115- let insert_result = sqlx:: query! (
71+ let insert_result: Result < TimeRow , sqlx :: Error > = sqlx:: query_as (
11672 r#"
11773 INSERT INTO astrolabe_tests (time) VALUES ($1)
118- RETURNING time as "time: Time"
74+ RETURNING time
11975 "# ,
120- time as Time
12176 )
77+ . bind ( time)
12278 . fetch_one ( & db_pool)
12379 . await ;
12480
12581 assert ! ( insert_result. is_ok( ) ) ;
12682
127- let time = insert_result. unwrap ( ) . time . unwrap ( ) ;
83+ let time = insert_result. unwrap ( ) . time ;
12884
12985 assert_eq ! ( "10:30:40:123456000" , time. format( "HH:mm:ss:nnnnn" ) ) ;
13086 }
131-
132- #[ sqlx:: test]
133- async fn time_array ( db_pool : PgPool ) {
134- let time_1 = Time :: from_hms ( 10 , 30 , 40 )
135- . unwrap ( )
136- . set_nano ( 123_456_789 )
137- . unwrap ( ) ;
138- let time_2 = Time :: from_hms ( 23 , 20 , 35 )
139- . unwrap ( )
140- . set_nano ( 123_456_789 )
141- . unwrap ( ) ;
142- let insert_result = sqlx:: query!(
143- r#"
144- INSERT INTO astrolabe_tests (times) VALUES ($1)
145- RETURNING times as "times: Vec<Time>"
146- "# ,
147- vec![ time_1, time_2] as Vec <Time >
148- )
149- . fetch_one ( & db_pool)
150- . await ;
151-
152- assert ! ( insert_result. is_ok( ) ) ;
153-
154- let times = insert_result. unwrap ( ) . times . unwrap ( ) ;
155-
156- assert_eq ! ( "10:30:40:123456000" , times[ 0 ] . format( "HH:mm:ss:nnnnn" ) ) ;
157- assert_eq ! ( "23:20:35:123456000" , times[ 1 ] . format( "HH:mm:ss:nnnnn" ) ) ;
158- }
15987}
0 commit comments