@@ -7,14 +7,14 @@ use argon2::password_hash::{Error, SaltString};
7
7
use argon2:: { Argon2 , PasswordHash , PasswordHasher , PasswordVerifier } ;
8
8
use log:: { error, warn} ;
9
9
use rand:: thread_rng;
10
- use rorm:: { insert, query, update, Database , Model } ;
10
+ use rorm:: { insert, query, update, Database , FieldAccess , Model } ;
11
11
use serde:: { Deserialize , Serialize } ;
12
12
use utoipa:: ToSchema ;
13
13
use uuid:: Uuid ;
14
14
15
15
use crate :: chan:: { WsManagerChan , WsManagerMessage , WsMessage } ;
16
16
use crate :: models:: { Account , AccountInsert } ;
17
- use crate :: server:: handler:: { ApiError , ApiResult , PathUuid } ;
17
+ use crate :: server:: handler:: { ApiError , ApiErrorResponse , ApiResult , PathUuid } ;
18
18
19
19
/// The content to register a new account
20
20
#[ derive( Debug , Deserialize , ToSchema ) ]
@@ -119,7 +119,7 @@ pub async fn get_me(db: Data<Database>, session: Session) -> ApiResult<Json<Acco
119
119
let uuid: Uuid = session. get ( "uuid" ) ?. ok_or ( ApiError :: SessionCorrupt ) ?;
120
120
121
121
let account = query ! ( db. as_ref( ) , Account )
122
- . condition ( Account :: F . uuid . equals ( uuid. as_ref ( ) ) )
122
+ . condition ( Account :: F . uuid . equals ( uuid) )
123
123
. optional ( )
124
124
. await ?
125
125
. ok_or ( ApiError :: SessionCorrupt ) ?;
@@ -150,8 +150,10 @@ pub async fn delete_me(
150
150
) -> ApiResult < HttpResponse > {
151
151
let uuid: Uuid = session. get ( "uuid" ) ?. ok_or ( ApiError :: SessionCorrupt ) ?;
152
152
153
- rorm:: delete!( db. as_ref( ) , Account )
154
- . condition ( Account :: F . uuid . equals ( uuid. as_ref ( ) ) )
153
+ let db = db. into_inner ( ) ;
154
+
155
+ rorm:: delete!( & * db, Account )
156
+ . condition ( Account :: F . uuid . equals ( uuid) )
155
157
. await ?;
156
158
157
159
// Clear the current session
@@ -206,7 +208,7 @@ pub async fn set_password(
206
208
let mut tx = db. start_transaction ( ) . await ?;
207
209
208
210
let ( pw_hash, ) = query ! ( & mut tx, ( Account :: F . password_hash, ) )
209
- . condition ( Account :: F . uuid . equals ( uuid. as_ref ( ) ) )
211
+ . condition ( Account :: F . uuid . equals ( uuid) )
210
212
. optional ( )
211
213
. await ?
212
214
. ok_or ( ApiError :: SessionCorrupt ) ?;
@@ -224,8 +226,8 @@ pub async fn set_password(
224
226
. to_string ( ) ;
225
227
226
228
update ! ( & mut tx, Account )
227
- . condition ( Account :: F . uuid . equals ( uuid. as_ref ( ) ) )
228
- . set ( Account :: F . password_hash , & password_hash)
229
+ . condition ( Account :: F . uuid . equals ( uuid) )
230
+ . set ( Account :: F . password_hash , password_hash)
229
231
. exec ( )
230
232
. await ?;
231
233
@@ -264,7 +266,10 @@ pub struct UpdateAccountRequest {
264
266
) ]
265
267
#[ put( "/accounts/me" ) ]
266
268
pub async fn update_me (
267
- req : Json < UpdateAccountRequest > ,
269
+ Json ( UpdateAccountRequest {
270
+ username,
271
+ display_name,
272
+ } ) : Json < UpdateAccountRequest > ,
268
273
db : Data < Database > ,
269
274
session : Session ,
270
275
ws_manager_chan : Data < WsManagerChan > ,
@@ -273,7 +278,7 @@ pub async fn update_me(
273
278
274
279
let mut tx = db. start_transaction ( ) . await ?;
275
280
276
- if let Some ( username) = & req . username {
281
+ if let Some ( username) = & username {
277
282
if username. is_empty ( ) {
278
283
return Err ( ApiError :: InvalidUsername ) ;
279
284
}
@@ -288,17 +293,17 @@ pub async fn update_me(
288
293
}
289
294
}
290
295
291
- if let Some ( display_name) = & req . display_name {
296
+ if let Some ( display_name) = & display_name {
292
297
if display_name. is_empty ( ) {
293
298
return Err ( ApiError :: InvalidDisplayName ) ;
294
299
}
295
300
}
296
301
297
302
update ! ( & mut tx, Account )
298
- . condition ( Account :: F . uuid . equals ( uuid. as_ref ( ) ) )
303
+ . condition ( Account :: F . uuid . equals ( uuid) )
299
304
. begin_dyn_set ( )
300
- . set_if ( Account :: F . username , req . username . as_ref ( ) )
301
- . set_if ( Account :: F . display_name , req . display_name . as_ref ( ) )
305
+ . set_if ( Account :: F . username , username)
306
+ . set_if ( Account :: F . display_name , display_name)
302
307
. finish_dyn_set ( )
303
308
. map_err ( |_| ApiError :: EmptyJson ) ?
304
309
. exec ( )
@@ -312,7 +317,7 @@ pub async fn update_me(
312
317
Account :: F . display_name
313
318
)
314
319
)
315
- . condition ( Account :: F . uuid . equals ( uuid. as_ref ( ) ) )
320
+ . condition ( Account :: F . uuid . equals ( uuid) )
316
321
. optional ( )
317
322
. await ?
318
323
. ok_or ( ApiError :: SessionCorrupt ) ?;
@@ -359,8 +364,8 @@ pub async fn lookup_account_by_uuid(
359
364
req : Path < PathUuid > ,
360
365
db : Data < Database > ,
361
366
) -> ApiResult < Json < AccountResponse > > {
362
- let account = query ! ( db . as_ref ( ) , Account )
363
- . condition ( Account :: F . uuid . equals ( req. uuid . as_ref ( ) ) )
367
+ let account = query ! ( & * * db , Account )
368
+ . condition ( Account :: F . uuid . equals ( req. uuid ) )
364
369
. optional ( )
365
370
. await ?
366
371
. ok_or ( ApiError :: InvalidUuid ) ?;
@@ -404,7 +409,7 @@ pub async fn lookup_account_by_username(
404
409
req : Json < LookupAccountUsernameRequest > ,
405
410
db : Data < Database > ,
406
411
) -> ApiResult < Json < AccountResponse > > {
407
- let account = query ! ( db . as_ref ( ) , Account )
412
+ let account = query ! ( & * * db , Account )
408
413
. condition ( Account :: F . username . equals ( & req. username ) )
409
414
. optional ( )
410
415
. await ?
0 commit comments