diff options
-rw-r--r-- | rust/src/api_server.rs | 6 | ||||
-rw-r--r-- | rust/tests/test_api_server.rs | 21 |
2 files changed, 24 insertions, 3 deletions
diff --git a/rust/src/api_server.rs b/rust/src/api_server.rs index d172cb16..00d5cdde 100644 --- a/rust/src/api_server.rs +++ b/rust/src/api_server.rs @@ -807,9 +807,9 @@ impl Server { if !new_abstracts.is_empty() { // Sort of an "upsert"; only inserts new abstract rows if they don't already exist insert_into(abstracts::table) - .values(new_abstracts) - //.on_conflict(abstracts::sha1) - //.do_nothing() + .values(&new_abstracts) + .on_conflict(abstracts::sha1) + .do_nothing() .execute(conn)?; } let release_abstract_rows: Vec<ReleaseRevAbstractNewRow> = abstract_list diff --git a/rust/tests/test_api_server.rs b/rust/tests/test_api_server.rs index f43101c0..ca2d8df2 100644 --- a/rust/tests/test_api_server.rs +++ b/rust/tests/test_api_server.rs @@ -797,6 +797,27 @@ fn test_abstracts() { None, ); + // Same abstracts; checking that re-inserting works + check_response( + request::post( + "http://localhost:9411/v0/release", + headers.clone(), + r#"{"title": "some paper again", + "abstracts": [ + {"lang": "zh", + "mimetype": "text/plain", + "content": "some rando abstract 24iu3i25u2" }, + {"lang": "en", + "mimetype": "application/xml+jats", + "content": "some other abstract 99139405" } + ] + }"#, + &router, + ), + status::Created, + None, + ); + let editor_id = Uuid::parse_str("00000000-0000-0000-AAAA-000000000001").unwrap(); let editgroup_id = get_or_create_editgroup(editor_id, &conn).unwrap(); check_response( |