@@ -320,7 +320,7 @@ fn add_keywords_into_database(
320
320
let wanted_keywords: HashMap < String , String > = pkg
321
321
. keywords
322
322
. iter ( )
323
- . map ( |kw| ( slugify ( & kw) , kw. clone ( ) ) )
323
+ . map ( |kw| ( slugify ( kw) , kw. clone ( ) ) )
324
324
. collect ( ) ;
325
325
326
326
let existing_keyword_slugs: HashSet < String > = conn
@@ -388,41 +388,37 @@ fn update_owners_in_database(
388
388
SET
389
389
avatar = EXCLUDED.avatar,
390
390
name = EXCLUDED.name,
391
- email = EXCLUDED.email" ,
391
+ email = EXCLUDED.email
392
+ RETURNING id" ,
392
393
) ?;
393
- for owner in owners {
394
- conn. execute (
395
- & owner_upsert,
396
- & [ & owner. login , & owner. avatar , & owner. name , & owner. email ] ,
397
- ) ?;
398
- }
399
394
400
- let updated_oids: Vec < i32 > = conn
401
- . query (
402
- "INSERT INTO owner_rels (cid, oid)
403
- SELECT $1,id
404
- FROM owners
405
- WHERE login = ANY($2)
406
- ON CONFLICT (cid,oid)
407
- DO UPDATE -- we need this so the existing/updated records end
408
- -- up being in the returned OIDs
409
- SET oid=excluded.oid
410
- RETURNING oid" ,
411
- & [
412
- & crate_id,
413
- & owners. iter ( ) . map ( |o| o. login . clone ( ) ) . collect :: < Vec < _ > > ( ) ,
414
- ] ,
415
- ) ?
395
+ let oids: Vec < i32 > = owners
416
396
. iter ( )
417
- . map ( |row| row. get ( 0 ) )
418
- . collect ( ) ;
397
+ . map ( |owner| -> Result < _ > {
398
+ Ok ( conn
399
+ . query_one (
400
+ & owner_upsert,
401
+ & [ & owner. login , & owner. avatar , & owner. name , & owner. email ] ,
402
+ ) ?
403
+ . get ( 0 ) )
404
+ } )
405
+ . collect :: < Result < Vec < _ > > > ( ) ?;
406
+
407
+ conn. execute (
408
+ "INSERT INTO owner_rels (cid, oid)
409
+ SELECT $1,oid
410
+ FROM UNNEST($2::int[]) as oid
411
+ ON CONFLICT (cid,oid)
412
+ DO NOTHING" ,
413
+ & [ & crate_id, & oids] ,
414
+ ) ?;
419
415
420
416
conn. execute (
421
417
"DELETE FROM owner_rels
422
418
WHERE
423
419
cid = $1 AND
424
420
NOT (oid = ANY($2))" ,
425
- & [ & crate_id, & updated_oids ] ,
421
+ & [ & crate_id, & oids ] ,
426
422
) ?;
427
423
428
424
Ok ( ( ) )
0 commit comments