@@ -13,6 +13,7 @@ use serde::Deserialize;
13
13
use serde:: Serialize ;
14
14
15
15
#[ derive( Serialize , Deserialize , Debug ) ]
16
+ //Struct to take the data from the csv
16
17
struct Csv_User {
17
18
#[ serde( rename = "Banner ID" ) ]
18
19
banner_id : i32 ,
@@ -27,8 +28,8 @@ struct Csv_User {
27
28
#[ serde( rename = "Department" ) ]
28
29
department : String ,
29
30
}
30
-
31
31
fn main ( ) {
32
+ //Diesel things
32
33
dotenv ( ) . ok ( ) ;
33
34
34
35
simplelog:: TermLogger :: init ( simplelog:: LevelFilter :: Trace , simplelog:: Config :: default ( ) )
@@ -55,42 +56,49 @@ fn main(){
55
56
} ;
56
57
57
58
debug ! ( "Connected to database" ) ;
58
-
59
+ //Get file name and path from args
59
60
use std:: env;
60
61
let arg = env:: args ( ) . nth ( 1 ) ;
61
62
let filename = match arg {
62
63
Some ( name) => name,
63
64
None => {
64
- println ! ( "Needs a filename" ) ;
65
+ error ! ( "Needs a filename" ) ;
65
66
return ;
66
67
}
67
68
} ;
68
- println ! ( "{}" , filename) ;
69
-
69
+ debug ! ( "{}" , filename) ;
70
+ //Import the csv into an iterator
71
+ let mut user_count = 0 ;
70
72
let all_users_result = csv:: Reader :: from_path ( filename) ;
71
73
let mut all_users = match all_users_result{
72
74
Ok ( data) => data,
73
75
Err ( e) => {
74
- println ! ( "Bad file. Error {}" , e) ;
76
+ error ! ( "Bad file. Error {}" , e) ;
75
77
return ;
76
78
}
77
79
} ;
80
+ //Go through each item in the iterator
78
81
for result in all_users. deserialize ( ) {
82
+ //Check to see if it's valid
79
83
let csv_user: Csv_User = match result{
80
84
Ok ( data) => data,
81
85
Err ( e) => {
82
- println ! ( "Bad data, {:?}" , e) ;
86
+ error ! ( "Bad data, {:?}" , e) ;
83
87
return ;
84
88
}
85
89
} ;
90
+ //Convert the user data from the csv and create a New User from it
86
91
let new_user: NewUser = NewUser {
87
92
first_name : csv_user. first_name ,
88
93
last_name : csv_user. last_name ,
89
94
email : Some ( csv_user. email ) ,
90
95
banner_id : csv_user. banner_id as u32 ,
91
96
} ;
92
-
93
- requests:: create_user ( new_user, & connection) ;
97
+ //Import new user into database
98
+ let import_user = UserRequest :: CreateUser ( new_user) ;
99
+ requests:: handle_user ( import_user, & connection) ;
100
+ user_count = user_count+1 ;
94
101
}
102
+ info ! ( "Imported {} user(s)" , user_count) ;
95
103
}
96
104
0 commit comments