1
1
// #![feature(trace_macros)]
2
2
use chrono:: { NaiveDateTime , Utc } ;
3
3
use ormx:: { Insert , Table } ;
4
- use sqlx:: PgPool ;
4
+ use sqlx:: { PgConnection , PgPool } ;
5
5
6
6
// trace_macros!(true);
7
7
@@ -18,6 +18,7 @@ async fn main() -> anyhow::Result<()> {
18
18
. init ( ) ?;
19
19
20
20
let db = PgPool :: connect ( & dotenv:: var ( "DATABASE_URL" ) ?) . await ?;
21
+ let mut conn = db. acquire ( ) . await ?;
21
22
22
23
log:: info!( "insert a new row into the database" ) ;
23
24
let mut new = InsertUser {
@@ -28,7 +29,7 @@ async fn main() -> anyhow::Result<()> {
28
29
disabled : None ,
29
30
role : Role :: User ,
30
31
}
31
- . insert ( & mut * db . acquire ( ) . await ? )
32
+ . insert ( & mut conn )
32
33
. await ?;
33
34
34
35
log:: info!( "update a single field" ) ;
@@ -60,15 +61,41 @@ async fn main() -> anyhow::Result<()> {
60
61
log:: info!( "delete the user from the database" ) ;
61
62
new. delete ( & db) . await ?;
62
63
64
+ log:: info!( "inserting 3 dummy users with ids: 1, 2 & 3" ) ;
65
+ insert_dummy_user ( & mut conn, 2 ) . await ?;
66
+ insert_dummy_user ( & mut conn, 3 ) . await ?;
67
+ insert_dummy_user ( & mut conn, 4 ) . await ?;
68
+
69
+ log:: info!( "getting many users by any user id (using 'get_any' getter)" ) ;
70
+ let users = User :: get_many_by_user_ids ( & mut conn, & [ 2 , 4 ] ) . await ?;
71
+ dbg ! ( & users) ;
72
+ assert_eq ! ( users. len( ) , 2 ) ;
73
+
74
+ log:: info!( "empty user table" ) ;
75
+ sqlx:: query!( "DELETE FROM users" ) . execute ( & db) . await ?;
63
76
Ok ( ( ) )
64
77
}
65
78
79
+ async fn insert_dummy_user ( conn : & mut PgConnection , id : i32 ) -> Result < User , sqlx:: Error > {
80
+ InsertUser {
81
+ user_id : id,
82
+ first_name : "Dummy" . to_owned ( ) ,
83
+ last_name : "Dummy" . to_owned ( ) ,
84
+ email : format ! ( "dummy{}@mail.com" , id) ,
85
+ disabled : None ,
86
+ role : Role :: User ,
87
+ }
88
+ . insert ( conn)
89
+ . await
90
+ }
91
+
66
92
#[ derive( Debug , ormx:: Table ) ]
67
93
#[ ormx( table = "users" , id = user_id, insertable) ]
68
94
struct User {
69
95
// map this field to the column "id"
70
96
#[ ormx( column = "id" ) ]
71
97
#[ ormx( get_one = get_by_user_id) ]
98
+ #[ ormx( get_any = get_many_by_user_ids) ]
72
99
user_id : i32 ,
73
100
first_name : String ,
74
101
last_name : String ,
0 commit comments