diff options
-rw-r--r-- | rust/src/editing.rs | 11 | ||||
-rw-r--r-- | rust/src/editing_crud.rs | 174 | ||||
-rw-r--r-- | rust/src/endpoints.rs | 12 |
3 files changed, 90 insertions, 107 deletions
diff --git a/rust/src/editing.rs b/rust/src/editing.rs index 33caf6a9..e181e8a7 100644 --- a/rust/src/editing.rs +++ b/rust/src/editing.rs @@ -29,7 +29,9 @@ impl EditContext { .count() .get_result(conn)?; if count > 0 { - return Err(FatcatError::EditgroupAlreadyAccepted(self.editgroup_id.to_string()).into()); + Err(FatcatError::EditgroupAlreadyAccepted( + self.editgroup_id.to_string(), + ))?; } Ok(()) } @@ -60,10 +62,9 @@ pub fn make_edit_context( let row = eg.db_create(conn, autoaccept)?; FatcatId::from_uuid(&row.id) } - _ => { - // TODO: better error response - bail!("unsupported editgroup context"); - } + _ => Err(FatcatError::BadRequest( + "unsupported batch editgroup/accept combination".to_string(), + ))?, }; Ok(EditContext { editor_id, diff --git a/rust/src/editing_crud.rs b/rust/src/editing_crud.rs index 65403eee..9d6477a5 100644 --- a/rust/src/editing_crud.rs +++ b/rust/src/editing_crud.rs @@ -140,32 +140,26 @@ impl EditgroupCrud for Editgroup { before: Option<chrono::DateTime<chrono::Utc>>, ) -> Result<Vec<(EditgroupRow, Option<ChangelogRow>)>> { let rows: Vec<(EditgroupRow, Option<ChangelogRow>)> = match (since, before) { - (Some(since), None) => { - editgroup::table - .left_outer_join(changelog::table) - .filter(editgroup::editor_id.eq(editor_id.to_uuid())) - .filter(editgroup::created.gt(since)) - .order_by(editgroup::created.asc()) - .limit(limit as i64) - .get_results(conn)? - }, - (_, Some(before)) => { - editgroup::table - .left_outer_join(changelog::table) - .filter(editgroup::editor_id.eq(editor_id.to_uuid())) - .filter(editgroup::created.lt(before)) - .order_by(editgroup::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, - (None, None) => { - editgroup::table - .left_outer_join(changelog::table) - .filter(editgroup::editor_id.eq(editor_id.to_uuid())) - .order_by(editgroup::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, + (Some(since), None) => editgroup::table + .left_outer_join(changelog::table) + .filter(editgroup::editor_id.eq(editor_id.to_uuid())) + .filter(editgroup::created.gt(since)) + .order_by(editgroup::created.asc()) + .limit(limit as i64) + .get_results(conn)?, + (_, Some(before)) => editgroup::table + .left_outer_join(changelog::table) + .filter(editgroup::editor_id.eq(editor_id.to_uuid())) + .filter(editgroup::created.lt(before)) + .order_by(editgroup::created.desc()) + .limit(limit as i64) + .get_results(conn)?, + (None, None) => editgroup::table + .left_outer_join(changelog::table) + .filter(editgroup::editor_id.eq(editor_id.to_uuid())) + .order_by(editgroup::created.desc()) + .limit(limit as i64) + .get_results(conn)?, }; Ok(rows) } @@ -177,32 +171,26 @@ impl EditgroupCrud for Editgroup { before: Option<chrono::DateTime<chrono::Utc>>, ) -> Result<Vec<EditgroupRow>> { let rows: Vec<EditgroupRow> = match (since, before) { - (Some(since), None) => { - editgroup::table - .filter(editgroup::is_accepted.eq(false)) - .filter(editgroup::submitted.is_not_null()) - .filter(editgroup::submitted.gt(since)) - .order_by(editgroup::submitted.asc()) - .limit(limit as i64) - .get_results(conn)? - }, - (_, Some(before)) => { - editgroup::table - .filter(editgroup::is_accepted.eq(false)) - .filter(editgroup::submitted.is_not_null()) - .filter(editgroup::submitted.lt(before)) - .order_by(editgroup::submitted.desc()) - .limit(limit as i64) - .get_results(conn)? - }, - (None, None) => { - editgroup::table - .filter(editgroup::is_accepted.eq(false)) - .filter(editgroup::submitted.is_not_null()) - .order_by(editgroup::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, + (Some(since), None) => editgroup::table + .filter(editgroup::is_accepted.eq(false)) + .filter(editgroup::submitted.is_not_null()) + .filter(editgroup::submitted.gt(since)) + .order_by(editgroup::submitted.asc()) + .limit(limit as i64) + .get_results(conn)?, + (_, Some(before)) => editgroup::table + .filter(editgroup::is_accepted.eq(false)) + .filter(editgroup::submitted.is_not_null()) + .filter(editgroup::submitted.lt(before)) + .order_by(editgroup::submitted.desc()) + .limit(limit as i64) + .get_results(conn)?, + (None, None) => editgroup::table + .filter(editgroup::is_accepted.eq(false)) + .filter(editgroup::submitted.is_not_null()) + .order_by(editgroup::created.desc()) + .limit(limit as i64) + .get_results(conn)?, }; Ok(rows) } @@ -315,29 +303,23 @@ impl EditgroupAnnotationCrud for EditgroupAnnotation { before: Option<chrono::DateTime<chrono::Utc>>, ) -> Result<Vec<EditgroupAnnotationRow>> { let rows: Vec<EditgroupAnnotationRow> = match (since, before) { - (Some(since), None) => { - editgroup_annotation::table - .filter(editgroup_annotation::editor_id.eq(editor_id.to_uuid())) - .filter(editgroup_annotation::created.gt(since)) - .order_by(editgroup_annotation::created.asc()) - .limit(limit as i64) - .get_results(conn)? - }, - (_, Some(before)) => { - editgroup_annotation::table - .filter(editgroup_annotation::editor_id.eq(editor_id.to_uuid())) - .filter(editgroup_annotation::created.lt(before)) - .order_by(editgroup_annotation::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, - (None, None) => { - editgroup_annotation::table - .filter(editgroup_annotation::editor_id.eq(editor_id.to_uuid())) - .order_by(editgroup_annotation::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, + (Some(since), None) => editgroup_annotation::table + .filter(editgroup_annotation::editor_id.eq(editor_id.to_uuid())) + .filter(editgroup_annotation::created.gt(since)) + .order_by(editgroup_annotation::created.asc()) + .limit(limit as i64) + .get_results(conn)?, + (_, Some(before)) => editgroup_annotation::table + .filter(editgroup_annotation::editor_id.eq(editor_id.to_uuid())) + .filter(editgroup_annotation::created.lt(before)) + .order_by(editgroup_annotation::created.desc()) + .limit(limit as i64) + .get_results(conn)?, + (None, None) => editgroup_annotation::table + .filter(editgroup_annotation::editor_id.eq(editor_id.to_uuid())) + .order_by(editgroup_annotation::created.desc()) + .limit(limit as i64) + .get_results(conn)?, }; Ok(rows) } @@ -350,29 +332,23 @@ impl EditgroupAnnotationCrud for EditgroupAnnotation { before: Option<chrono::DateTime<chrono::Utc>>, ) -> Result<Vec<EditgroupAnnotationRow>> { let rows: Vec<EditgroupAnnotationRow> = match (since, before) { - (Some(since), None) => { - editgroup_annotation::table - .filter(editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid())) - .filter(editgroup_annotation::created.gt(since)) - .order_by(editgroup_annotation::created.asc()) - .limit(limit as i64) - .get_results(conn)? - }, - (_, Some(before)) => { - editgroup_annotation::table - .filter(editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid())) - .filter(editgroup_annotation::created.lt(before)) - .order_by(editgroup_annotation::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, - (None, None) => { - editgroup_annotation::table - .filter(editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid())) - .order_by(editgroup_annotation::created.desc()) - .limit(limit as i64) - .get_results(conn)? - }, + (Some(since), None) => editgroup_annotation::table + .filter(editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid())) + .filter(editgroup_annotation::created.gt(since)) + .order_by(editgroup_annotation::created.asc()) + .limit(limit as i64) + .get_results(conn)?, + (_, Some(before)) => editgroup_annotation::table + .filter(editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid())) + .filter(editgroup_annotation::created.lt(before)) + .order_by(editgroup_annotation::created.desc()) + .limit(limit as i64) + .get_results(conn)?, + (None, None) => editgroup_annotation::table + .filter(editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid())) + .order_by(editgroup_annotation::created.desc()) + .limit(limit as i64) + .get_results(conn)?, }; Ok(rows) } @@ -392,6 +368,8 @@ impl EditgroupAnnotationCrud for EditgroupAnnotation { .values(( editgroup_annotation::editor_id.eq(editor_id.to_uuid()), editgroup_annotation::editgroup_id.eq(editgroup_id.to_uuid()), + editgroup_annotation::comment_markdown.eq(&self.comment_markdown), + editgroup_annotation::extra_json.eq(&self.extra), )) .get_result(conn)?; Ok(ed) diff --git a/rust/src/endpoints.rs b/rust/src/endpoints.rs index 33c4bc3e..f7e93448 100644 --- a/rust/src/endpoints.rs +++ b/rust/src/endpoints.rs @@ -754,7 +754,10 @@ impl Api for Server { let limit = cmp::min(100, limit.unwrap_or(20)) as u64; let rows = Editgroup::db_get_range_for_editor(&conn, editor_id, limit, since, before)?; - Ok(rows.into_iter().map(|(eg, cl)| eg.into_model_partial(cl.map(|v| v.id))).collect()) + Ok(rows + .into_iter() + .map(|(eg, cl)| eg.into_model_partial(cl.map(|v| v.id))) + .collect()) }) .map_err(|e: Error| FatcatError::from(e)) { @@ -892,8 +895,10 @@ impl Api for Server { .transaction(|| { let limit = cmp::min(100, limit.unwrap_or(20)) as u64; let row = Editgroup::db_get_range_reviewable(&conn, limit, since, before)?; - let mut editgroups: Vec<Editgroup> = - row.into_iter().map(|eg| eg.into_model_partial(None)).collect(); + let mut editgroups: Vec<Editgroup> = row + .into_iter() + .map(|eg| eg.into_model_partial(None)) + .collect(); if let Some(expand) = expand { let expand = ExpandFlags::from_str(&expand)?; for eg in editgroups.iter_mut() { @@ -1031,7 +1036,6 @@ impl Api for Server { annotation.editor_id = Some(auth_context.editor_id.to_string()); } }; - // TODO: verify editgroup_id annotation.db_create(&conn).map(|a| a.into_model()) }) .map_err(|e: Error| FatcatError::from(e)) |