Skip to content

Commit 33ddc64

Browse files
sypharjyn514
authored andcommitted
Fix keyword conflict when rebuilding releases
This is a regression after b4fc5ab which made a previously ignored error being raised.
1 parent f6e3f63 commit 33ddc64

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/db/add_package.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -343,18 +343,15 @@ fn add_keywords_into_database(
343343
conn.execute(&insert_keyword_query, &[&name, &slug])?;
344344
}
345345

346-
let affected_rows = conn.execute(
346+
conn.execute(
347347
"INSERT INTO keyword_rels (rid, kid)
348348
SELECT $1 as rid, id as kid
349349
FROM keywords
350-
WHERE slug = ANY($2)",
350+
WHERE slug = ANY($2)
351+
ON CONFLICT DO NOTHING;",
351352
&[&release_id, &wanted_keywords.keys().collect::<Vec<_>>()],
352353
)?;
353354

354-
if affected_rows != pkg.keywords.len() as u64 {
355-
failure::bail!("not all keywords added to database");
356-
}
357-
358355
Ok(())
359356
}
360357

@@ -486,6 +483,26 @@ mod test {
486483
})
487484
}
488485

486+
#[test]
487+
fn keyword_conflict_when_rebuilding_release() {
488+
wrapper(|env| {
489+
env.fake_release()
490+
.name("dummy")
491+
.version("0.13.0")
492+
.keywords(vec!["kw 3".into(), "kw 4".into()])
493+
.create()?;
494+
495+
// same version so we have the same release
496+
env.fake_release()
497+
.name("dummy")
498+
.version("0.13.0")
499+
.keywords(vec!["kw 3".into(), "kw 4".into()])
500+
.create()?;
501+
502+
Ok(())
503+
})
504+
}
505+
489506
#[test]
490507
fn updated_keywords() {
491508
wrapper(|env| {

0 commit comments

Comments
 (0)