@@ -349,20 +349,17 @@ fn update_owners_in_database(
349
349
owners : & [ CrateOwner ] ,
350
350
crate_id : i32 ,
351
351
) -> Result < ( ) > {
352
- let existing_owners: Vec < String > = conn
353
- . query (
354
- "
355
- SELECT login
356
- FROM owners
357
- INNER JOIN owner_rels
358
- ON owner_rels.oid = owners.id
359
- WHERE owner_rels.cid = $1
360
- " ,
361
- & [ & crate_id] ,
362
- ) ?
363
- . into_iter ( )
364
- . map ( |row| row. get ( 0 ) )
365
- . collect ( ) ;
352
+ let rows = conn. query (
353
+ "
354
+ SELECT login
355
+ FROM owners
356
+ INNER JOIN owner_rels
357
+ ON owner_rels.oid = owners.id
358
+ WHERE owner_rels.cid = $1
359
+ " ,
360
+ & [ & crate_id] ,
361
+ ) ?;
362
+ let existing_owners = rows. into_iter ( ) . map ( |row| -> String { row. get ( 0 ) } ) ;
366
363
367
364
for owner in owners {
368
365
debug ! ( "Updating owner data for {}: {:?}" , owner. login, owner) ;
@@ -372,54 +369,42 @@ fn update_owners_in_database(
372
369
let owner_id: i32 = {
373
370
conn. query (
374
371
"
375
- INSERT INTO owners (login, avatar, name, email)
376
- VALUES ($1, $2, $3, $4)
377
- ON CONFLICT (login) DO UPDATE
378
- SET
379
- avatar = $2,
380
- name = $3,
381
- email = $4
382
- RETURNING id
383
- " ,
372
+ INSERT INTO owners (login, avatar, name, email)
373
+ VALUES ($1, $2, $3, $4)
374
+ ON CONFLICT (login) DO UPDATE
375
+ SET
376
+ avatar = $2,
377
+ name = $3,
378
+ email = $4
379
+ RETURNING id
380
+ " ,
384
381
& [ & owner. login , & owner. avatar , & owner. name , & owner. email ] ,
385
382
) ?
386
383
. get ( 0 )
387
384
. get ( 0 )
388
385
} ;
389
386
390
387
// add relationship
391
- let updated = conn. query (
392
- "INSERT INTO owner_rels (cid, oid) VALUES ($1, $2)" ,
388
+ conn. query (
389
+ "INSERT INTO owner_rels (cid, oid) VALUES ($1, $2) ON CONFLICT DO NOTHING " ,
393
390
& [ & crate_id, & owner_id] ,
394
- ) ;
395
-
396
- match updated {
397
- Ok ( _) => debug ! ( "Added new owner relationship" ) ,
398
- Err ( e)
399
- if e. as_db ( ) . and_then ( |e| e. constraint . as_deref ( ) )
400
- == Some ( "owner_rels_cid_oid_key" ) =>
401
- {
402
- debug ! ( "Existing owner relationship" ) ;
403
- }
404
- Err ( e) => return Err ( e. into ( ) ) ,
405
- }
391
+ ) ?;
406
392
}
407
393
408
- let to_remove = existing_owners
409
- . iter ( )
410
- . filter ( |login| !owners. iter ( ) . any ( |owner| & & owner. login == login) ) ;
394
+ let to_remove =
395
+ existing_owners. filter ( |login| !owners. iter ( ) . any ( |owner| & owner. login == login) ) ;
411
396
412
397
for login in to_remove {
413
398
debug ! ( "Removing owner relationship {}" , login) ;
414
399
// remove relationship
415
400
conn. query (
416
401
"
417
- DELETE FROM owner_rels
418
- USING owners
419
- WHERE owner_rels.cid = $1
420
- AND owner_rels.oid = owners.id
421
- AND owners.login = $2
422
- " ,
402
+ DELETE FROM owner_rels
403
+ USING owners
404
+ WHERE owner_rels.cid = $1
405
+ AND owner_rels.oid = owners.id
406
+ AND owners.login = $2
407
+ " ,
423
408
& [ & crate_id, & login] ,
424
409
) ?;
425
410
}
0 commit comments