diff options
Diffstat (limited to 'rust')
-rw-r--r-- | rust/src/api_entity_crud.rs | 109 | ||||
-rw-r--r-- | rust/src/api_helpers.rs | 24 | ||||
-rw-r--r-- | rust/src/bin/fatcat-export.rs | 38 | ||||
-rw-r--r-- | rust/src/bin/fatcatd.rs | 3 | ||||
-rw-r--r-- | rust/src/database_models.rs | 3 | ||||
-rw-r--r-- | rust/tests/test_old_python_tests.rs | 27 |
6 files changed, 127 insertions, 77 deletions
diff --git a/rust/src/api_entity_crud.rs b/rust/src/api_entity_crud.rs index 814b42da..8770644c 100644 --- a/rust/src/api_entity_crud.rs +++ b/rust/src/api_entity_crud.rs @@ -153,8 +153,10 @@ macro_rules! generic_db_create_batch { rev_id: Some(rev_id.clone()), is_live: edit_context.autoaccept, redirect_id: None, - }).collect::<Vec<Self::IdentNewRow>>(), - ).returning($ident_table::id) + }) + .collect::<Vec<Self::IdentNewRow>>(), + ) + .returning($ident_table::id) .get_results(conn)?; let edits: Vec<Self::EditRow> = insert_into($edit_table::table) .values( @@ -168,8 +170,10 @@ macro_rules! generic_db_create_batch { redirect_id: None, prev_rev: None, extra_json: edit_context.extra_json.clone(), - }).collect::<Vec<Self::EditNewRow>>(), - ).get_results(conn)?; + }) + .collect::<Vec<Self::EditNewRow>>(), + ) + .get_results(conn)?; Ok(edits) } }; @@ -228,7 +232,8 @@ macro_rules! generic_db_delete { $edit_table::redirect_id.eq(None::<Uuid>), $edit_table::prev_rev.eq(current.rev_id), $edit_table::extra_json.eq(&edit_context.extra_json), - )).get_result(conn)?; + )) + .get_result(conn)?; Ok(edit) } @@ -260,7 +265,8 @@ macro_rules! generic_db_get_history { editgroup: eg_row.into_model_partial(), changelog_entry: cl_row.into_model(), }) - }).collect(); + }) + .collect(); history } }; @@ -360,7 +366,8 @@ macro_rules! generic_db_accept_edits_batch { {entity}_ident.id = {entity}_edit.ident_id AND {entity}_edit.editgroup_id = $1", entity = $entity_name_str - )).bind::<diesel::sql_types::Uuid, _>(editgroup_id.to_uuid()) + )) + .bind::<diesel::sql_types::Uuid, _>(editgroup_id.to_uuid()) .execute(conn)?; Ok(count as u64) } @@ -388,14 +395,14 @@ macro_rules! generic_db_accept_edits_each { }) .collect(); /* - // 3. upsert ident rows (in sql) - let count: u64 = diesel::insert_into($ident_table::table) - .values(ident_rows) - .on_conflict() - .do_update() - .set(ident_rows) - .execute(conn)?; - */ + // 3. upsert ident rows (in sql) + let count: u64 = diesel::insert_into($ident_table::table) + .values(ident_rows) + .on_conflict() + .do_update() + .set(ident_rows) + .execute(conn)?; + */ // 3. update every row individually let count = ident_rows.len() as u64; for row in ident_rows { @@ -489,8 +496,10 @@ impl EntityCrud for ContainerEntity { abbrev: model.abbrev.clone(), coden: model.coden.clone(), extra_json: model.extra.clone(), - }).collect::<Vec<ContainerRevNewRow>>(), - ).returning(container_rev::id) + }) + .collect::<Vec<ContainerRevNewRow>>(), + ) + .returning(container_rev::id) .get_results(conn)?; Ok(rev_ids) } @@ -568,8 +577,10 @@ impl EntityCrud for CreatorEntity { orcid: model.orcid.clone(), wikidata_qid: model.wikidata_qid.clone(), extra_json: model.extra.clone(), - }).collect::<Vec<CreatorRevNewRow>>(), - ).returning(creator_rev::id) + }) + .collect::<Vec<CreatorRevNewRow>>(), + ) + .returning(creator_rev::id) .get_results(conn)?; Ok(rev_ids) } @@ -625,7 +636,8 @@ impl EntityCrud for FileEntity { .map(|r: FileRevUrlRow| FileEntityUrls { rel: r.rel, url: r.url, - }).collect(); + }) + .collect(); Ok(FileEntity { sha1: rev_row.sha1, @@ -656,8 +668,10 @@ impl EntityCrud for FileEntity { md5: model.md5.clone(), mimetype: model.mimetype.clone(), extra_json: model.extra.clone(), - }).collect::<Vec<FileRevNewRow>>(), - ).returning(file_rev::id) + }) + .collect::<Vec<FileRevNewRow>>(), + ) + .returning(file_rev::id) .get_results(conn)?; let mut file_release_rows: Vec<FileReleaseRow> = vec![]; @@ -674,7 +688,8 @@ impl EntityCrud for FileEntity { file_rev: *rev_id, target_release_ident_id: FatCatId::from_str(r)?.to_uuid(), }) - }).collect(); + }) + .collect(); file_release_rows.extend(these_release_rows?); } }; @@ -688,7 +703,8 @@ impl EntityCrud for FileEntity { file_rev: *rev_id, rel: u.rel.clone(), url: u.url.clone(), - }).collect(); + }) + .collect(); file_url_rows.extend(these_url_rows); } }; @@ -795,7 +811,8 @@ impl EntityCrud for ReleaseEntity { Some(FatCatId::from_uuid(&new_work_ids.pop().unwrap()).to_string()) } model - }).collect(); + }) + .collect(); let model_refs: Vec<&Self> = models_with_work_ids.iter().map(|s| s).collect(); let models = model_refs.as_slice(); @@ -809,8 +826,10 @@ impl EntityCrud for ReleaseEntity { rev_id: Some(*rev_id), is_live: edit_context.autoaccept, redirect_id: None, - }).collect::<Vec<Self::IdentNewRow>>(), - ).returning(release_ident::id) + }) + .collect::<Vec<Self::IdentNewRow>>(), + ) + .returning(release_ident::id) .get_results(conn)?; let edits: Vec<Self::EditRow> = insert_into(release_edit::table) .values( @@ -824,8 +843,10 @@ impl EntityCrud for ReleaseEntity { redirect_id: None, prev_rev: None, extra_json: edit_context.extra_json.clone(), - }).collect::<Vec<Self::EditNewRow>>(), - ).get_results(conn)?; + }) + .collect::<Vec<Self::EditNewRow>>(), + ) + .get_results(conn)?; Ok(edits) } @@ -863,7 +884,8 @@ impl EntityCrud for ReleaseEntity { target_release_id: r .target_release_ident_id .map(|v| FatCatId::from_uuid(&v).to_string()), - }).collect(), + }) + .collect(), ), }; @@ -875,7 +897,8 @@ impl EntityCrud for ReleaseEntity { .order(( release_contrib::role.asc(), release_contrib::index_val.asc(), - )).get_results(conn)? + )) + .get_results(conn)? .into_iter() .map(|c: ReleaseContribRow| ReleaseContrib { index: c.index_val.map(|v| v as i64), @@ -886,7 +909,8 @@ impl EntityCrud for ReleaseEntity { .creator_ident_id .map(|v| FatCatId::from_uuid(&v).to_string()), creator: None, - }).collect(), + }) + .collect(), ), }; @@ -905,7 +929,8 @@ impl EntityCrud for ReleaseEntity { lang: r.0.lang, content: Some(r.1.content), }, - ).collect(), + ) + .collect(), ), }; @@ -1033,7 +1058,8 @@ impl EntityCrud for ReleaseEntity { locator: r.locator.clone(), extra_json: r.extra.clone(), }) - }).collect::<Result<Vec<ReleaseRefNewRow>>>()?; + }) + .collect::<Result<Vec<ReleaseRefNewRow>>>()?; release_ref_rows.extend(these_ref_rows); } }; @@ -1055,7 +1081,8 @@ impl EntityCrud for ReleaseEntity { role: c.role.clone(), extra_json: c.extra.clone(), }) - }).collect::<Result<Vec<ReleaseContribNewRow>>>()?; + }) + .collect::<Result<Vec<ReleaseContribNewRow>>>()?; release_contrib_rows.extend(these_contrib_rows); } }; @@ -1069,7 +1096,8 @@ impl EntityCrud for ReleaseEntity { .map(|c| AbstractsRow { sha1: Sha1::from(c.content.clone().unwrap()).hexdigest(), content: c.content.clone().unwrap(), - }).collect(); + }) + .collect(); abstract_rows.extend(new_abstracts); let new_release_abstract_rows: Vec<ReleaseRevAbstractNewRow> = abstract_list .into_iter() @@ -1086,7 +1114,8 @@ impl EntityCrud for ReleaseEntity { lang: c.lang.clone(), mimetype: c.mimetype.clone(), }) - }).collect::<Result<Vec<ReleaseRevAbstractNewRow>>>()?; + }) + .collect::<Result<Vec<ReleaseRevAbstractNewRow>>>()?; release_abstract_rows.extend(new_release_abstract_rows); } } @@ -1172,8 +1201,10 @@ impl EntityCrud for WorkEntity { .iter() .map(|model| WorkRevNewRow { extra_json: model.extra.clone(), - }).collect::<Vec<WorkRevNewRow>>(), - ).returning(work_rev::id) + }) + .collect::<Vec<WorkRevNewRow>>(), + ) + .returning(work_rev::id) .get_results(conn)?; Ok(rev_ids) } diff --git a/rust/src/api_helpers.rs b/rust/src/api_helpers.rs index 952cb9cd..77377531 100644 --- a/rust/src/api_helpers.rs +++ b/rust/src/api_helpers.rs @@ -286,7 +286,8 @@ pub fn check_pmcid(raw: &str) -> Result<()> { Err(ErrorKind::MalformedExternalId(format!( "not a valid PubMed Central ID (PMCID): '{}' (expected, eg, 'PMC12345')", raw - )).into()) + )) + .into()) } } @@ -300,7 +301,8 @@ pub fn check_pmid(raw: &str) -> Result<()> { Err(ErrorKind::MalformedExternalId(format!( "not a valid PubMed ID (PMID): '{}' (expected, eg, '1234')", raw - )).into()) + )) + .into()) } } @@ -314,7 +316,8 @@ pub fn check_wikidata_qid(raw: &str) -> Result<()> { Err(ErrorKind::MalformedExternalId(format!( "not a valid Wikidata QID: '{}' (expected, eg, 'Q1234')", raw - )).into()) + )) + .into()) } } @@ -328,7 +331,8 @@ pub fn check_doi(raw: &str) -> Result<()> { Err(ErrorKind::MalformedExternalId(format!( "not a valid DOI: '{}' (expected, eg, '10.1234/aksjdfh')", raw - )).into()) + )) + .into()) } } @@ -342,7 +346,8 @@ pub fn check_issn(raw: &str) -> Result<()> { Err(ErrorKind::MalformedExternalId(format!( "not a valid ISSN: '{}' (expected, eg, '1234-5678')", raw - )).into()) + )) + .into()) } } @@ -356,7 +361,8 @@ pub fn check_orcid(raw: &str) -> Result<()> { Err(ErrorKind::MalformedExternalId(format!( "not a valid ORCID: '{}' (expected, eg, '0123-4567-3456-6789')", raw - )).into()) + )) + .into()) } } @@ -419,7 +425,8 @@ pub fn check_release_type(raw: &str) -> Result<()> { Err(ErrorKind::NotInControlledVocabulary(format!( "not a valid release_type: '{}' (expected a CSL type, eg, 'article-journal', 'book')", raw - )).into()) + )) + .into()) } #[test] @@ -460,7 +467,8 @@ pub fn check_contrib_role(raw: &str) -> Result<()> { Err(ErrorKind::NotInControlledVocabulary(format!( "not a valid contrib.role: '{}' (expected a CSL type, eg, 'author', 'editor')", raw - )).into()) + )) + .into()) } #[test] diff --git a/rust/src/bin/fatcat-export.rs b/rust/src/bin/fatcat-export.rs index 9dd5138e..dd3f4da4 100644 --- a/rust/src/bin/fatcat-export.rs +++ b/rust/src/bin/fatcat-export.rs @@ -40,7 +40,7 @@ use std::io::{BufReader, BufWriter}; const CHANNEL_BUFFER_LEN: usize = 200; -arg_enum!{ +arg_enum! { #[derive(PartialEq, Debug, Clone, Copy)] pub enum ExportEntityType { Creator, @@ -70,16 +70,26 @@ pub fn database_worker_pool() -> Result<ConnectionPool> { macro_rules! generic_loop_work { ($fn_name:ident, $entity_model:ident) => { - fn $fn_name(row_receiver: channel::Receiver<IdentRow>, output_sender: channel::Sender<String>, db_conn: &DbConn, expand: Option<ExpandFlags>) { + fn $fn_name( + row_receiver: channel::Receiver<IdentRow>, + output_sender: channel::Sender<String>, + db_conn: &DbConn, + expand: Option<ExpandFlags>, + ) { let result: Result<()> = (|| { for row in row_receiver { - let mut entity = $entity_model::db_get_rev(db_conn, row.rev_id.expect("valid, non-deleted row"), HideFlags::none()) - .chain_err(|| "reading entity from database")?; + let mut entity = $entity_model::db_get_rev( + db_conn, + row.rev_id.expect("valid, non-deleted row"), + HideFlags::none(), + ) + .chain_err(|| "reading entity from database")?; //let mut entity = ReleaseEntity::db_get_rev(db_conn, row.rev_id.expect("valid, non-deleted row"))?; entity.state = Some("active".to_string()); // XXX entity.ident = Some(row.ident_id.to_string()); if let Some(expand) = expand { - entity.db_expand(db_conn, expand) + entity + .db_expand(db_conn, expand) .chain_err(|| "expanding sub-entities from database")?; } output_sender.send(serde_json::to_string(&entity)?); @@ -91,7 +101,7 @@ macro_rules! generic_loop_work { } result.unwrap() } - } + }; } generic_loop_work!(loop_work_container, ContainerEntity); @@ -137,14 +147,14 @@ fn parse_line(s: &str) -> Result<IdentRow> { #[test] fn test_parse_line() { - assert!( - parse_line("00000000-0000-0000-3333-000000000001\t00000000-0000-0000-3333-fff000000001\t") - .is_ok() - ); - assert!( - parse_line("00000-0000-0000-3333-000000000001\t00000000-0000-0000-3333-fff000000001\t") - .is_err() - ); + assert!(parse_line( + "00000000-0000-0000-3333-000000000001\t00000000-0000-0000-3333-fff000000001\t" + ) + .is_ok()); + assert!(parse_line( + "00000-0000-0000-3333-000000000001\t00000000-0000-0000-3333-fff000000001\t" + ) + .is_err()); assert!( parse_line("00000-0000-0000-3333-000000000001\t00000000-0000-0000-3333-fff000000001") .is_err() diff --git a/rust/src/bin/fatcatd.rs b/rust/src/bin/fatcatd.rs index b40ac3c4..57b6a3da 100644 --- a/rust/src/bin/fatcatd.rs +++ b/rust/src/bin/fatcatd.rs @@ -32,7 +32,8 @@ fn main() { Arg::with_name("https") .long("https") .help("Whether to use HTTPS or not"), - ).get_matches(); + ) + .get_matches(); let decorator = slog_term::TermDecorator::new().build(); let drain = slog_term::CompactFormat::new(decorator).build().fuse(); diff --git a/rust/src/database_models.rs b/rust/src/database_models.rs index e8c7ad4e..a7076e09 100644 --- a/rust/src/database_models.rs +++ b/rust/src/database_models.rs @@ -25,7 +25,8 @@ impl EntityState { EntityState::Active(_) => "active", EntityState::Redirect(_, _) => "redirect", EntityState::Deleted => "deleted", - }.to_string() + } + .to_string() } } diff --git a/rust/tests/test_old_python_tests.rs b/rust/tests/test_old_python_tests.rs index eae131a7..d7e5c03b 100644 --- a/rust/tests/test_old_python_tests.rs +++ b/rust/tests/test_old_python_tests.rs @@ -277,20 +277,19 @@ fn test_merge_works() { // merge works client.merge_works(work_a_id, work_b_id) */ +// check results +let work_a = match client.get_work(work_a_id.clone(), None).wait().unwrap() { +GetWorkResponse::FoundEntity(e) => e, +_ => unreachable!(), +}; +let _work_b = match client.get_work(work_b_id.clone(), None).wait().unwrap() { +GetWorkResponse::FoundEntity(e) => e, +_ => unreachable!(), +}; +// TODO: assert_eq!(work_a.revision.unwrap(), work_b.revision.unwrap()); +assert_eq!(work_a.redirect, None); +// TODO: assert_eq!(work_b.redirect, Some(work_a_id)); - // check results - let work_a = match client.get_work(work_a_id.clone(), None).wait().unwrap() { - GetWorkResponse::FoundEntity(e) => e, - _ => unreachable!(), - }; - let _work_b = match client.get_work(work_b_id.clone(), None).wait().unwrap() { - GetWorkResponse::FoundEntity(e) => e, - _ => unreachable!(), - }; - // TODO: assert_eq!(work_a.revision.unwrap(), work_b.revision.unwrap()); - assert_eq!(work_a.redirect, None); - // TODO: assert_eq!(work_b.redirect, Some(work_a_id)); - - server.close().unwrap() +server.close().unwrap() } */ |