diff options
Diffstat (limited to 'rust/src')
| -rw-r--r-- | rust/src/database_models.rs | 4 | ||||
| -rw-r--r-- | rust/src/editing_crud.rs | 2 | ||||
| -rw-r--r-- | rust/src/endpoint_handlers.rs | 14 | ||||
| -rw-r--r-- | rust/src/endpoints.rs | 7 | ||||
| -rw-r--r-- | rust/src/entity_crud.rs | 8 | 
5 files changed, 20 insertions, 15 deletions
| diff --git a/rust/src/database_models.rs b/rust/src/database_models.rs index 1b0c2de3..34ce1de6 100644 --- a/rust/src/database_models.rs +++ b/rust/src/database_models.rs @@ -662,11 +662,11 @@ pub struct EditgroupRow {  impl EditgroupRow {      /// Returns an Editgroup API model *without* the entity edits actually populated. Useful for,      /// eg, entity history queries (where we already have the entity edit we want) -    pub fn into_model_partial(self, changelog_index: Option<i64>) -> Editgroup { +    pub fn into_model_partial(self, changelog_index: Option<i64>, editor: Option<Editor>) -> Editgroup {          Editgroup {              editgroup_id: Some(uuid2fcid(&self.id)),              editor_id: Some(uuid2fcid(&self.editor_id)), -            editor: None, +            editor: editor,              changelog_index: changelog_index,              submitted: self                  .submitted diff --git a/rust/src/editing_crud.rs b/rust/src/editing_crud.rs index 405afcc0..2526ef2b 100644 --- a/rust/src/editing_crud.rs +++ b/rust/src/editing_crud.rs @@ -144,7 +144,7 @@ impl EditgroupCrud for Editgroup {              let editor_id = FatcatId::from_str(                  self.editor_id                      .as_ref() -                    .expect("tried to expand bare Editor model"), +                    .expect("tried to expand bare Editgroup model"),              )?;              self.editor = Some(Editor::db_get(conn, editor_id)?.into_model());          } diff --git a/rust/src/endpoint_handlers.rs b/rust/src/endpoint_handlers.rs index dcc647ea..ba8505e1 100644 --- a/rust/src/endpoint_handlers.rs +++ b/rust/src/endpoint_handlers.rs @@ -460,7 +460,7 @@ impl Server {          editgroup: models::Editgroup,      ) -> Result<Editgroup> {          let row = editgroup.db_create(conn, false)?; -        Ok(row.into_model_partial(None)) +        Ok(row.into_model_partial(None, None))      }      pub fn get_editgroup_handler( @@ -469,7 +469,8 @@ impl Server {          editgroup_id: FatcatId,      ) -> Result<Editgroup> {          let (eg_row, cl_row) = Editgroup::db_get_with_changelog(conn, editgroup_id)?; -        let mut editgroup = eg_row.into_model_partial(cl_row.map(|cl| cl.id)); +        let editor = Editor::db_get(&conn, FatcatId::from_uuid(&eg_row.editor_id))?.into_model(); +        let mut editgroup = eg_row.into_model_partial(cl_row.map(|cl| cl.id), Some(editor));          let edits = EditgroupEdits {              containers: Some( @@ -546,17 +547,18 @@ impl Server {      ) -> Result<Vec<ChangelogEntry>> {          let limit = limit.unwrap_or(50); -        let changes: Vec<(ChangelogRow, EditgroupRow)> = changelog::table -            .inner_join(editgroup::table) +        let changes: Vec<(EditgroupRow, ChangelogRow, EditorRow)> = editgroup::table +            .inner_join(changelog::table) +            .inner_join(editor::table)              .order(changelog::id.desc())              .limit(limit)              .load(conn)?;          let entries = changes              .into_iter() -            .map(|(cl_row, eg_row)| ChangelogEntry { +            .map(|(eg_row, cl_row, editor_row)| ChangelogEntry {                  index: cl_row.id, -                editgroup: Some(eg_row.into_model_partial(None)), +                editgroup: Some(eg_row.into_model_partial(Some(cl_row.id), Some(editor_row.into_model()))),                  editgroup_id: uuid2fcid(&cl_row.editgroup_id),                  timestamp: chrono::DateTime::from_utc(cl_row.timestamp, chrono::Utc),              }) diff --git a/rust/src/endpoints.rs b/rust/src/endpoints.rs index 7d6db908..96a4700b 100644 --- a/rust/src/endpoints.rs +++ b/rust/src/endpoints.rs @@ -788,9 +788,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)?; +                let editor = Editor::db_get(&conn, editor_id)?.into_model();                  Ok(rows                      .into_iter() -                    .map(|(eg, cl)| eg.into_model_partial(cl.map(|v| v.id))) +                    .map(|(eg, cl)| eg.into_model_partial(cl.map(|v| v.id), Some(editor.clone())))                      .collect())              })              .map_err(|e: Error| FatcatError::from(e)) @@ -931,7 +932,7 @@ impl Api for Server {                  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)) +                    .map(|eg| eg.into_model_partial(None, None))                      .collect();                  if let Some(expand) = expand {                      let expand = ExpandFlags::from_str(&expand)?; @@ -1032,7 +1033,7 @@ impl Api for Server {                  };                  editgroup                      .db_update(&conn, editgroup_id, submit) -                    .map(|eg| eg.into_model_partial(None)) // can't update an accepted editgroup +                    .map(|eg| eg.into_model_partial(None, None)) // can't update an accepted editgroup              })              .map_err(|e: Error| FatcatError::from(e))          { diff --git a/rust/src/entity_crud.rs b/rust/src/entity_crud.rs index bdb83560..269bfdf6 100644 --- a/rust/src/entity_crud.rs +++ b/rust/src/entity_crud.rs @@ -538,9 +538,10 @@ macro_rules! generic_db_get_history {          ) -> Result<Vec<EntityHistoryEntry>> {              let limit = limit.unwrap_or(50); // TODO: make a static -            let rows: Vec<(EditgroupRow, ChangelogRow, Self::EditRow)> = editgroup::table +            let rows: Vec<(EditgroupRow, ChangelogRow, Self::EditRow, EditorRow)> = editgroup::table                  .inner_join(changelog::table)                  .inner_join($edit_table::table) +                .inner_join(editor::table)                  .filter($edit_table::ident_id.eq(ident.to_uuid()))                  .order(changelog::id.desc())                  .limit(limit) @@ -548,10 +549,11 @@ macro_rules! generic_db_get_history {              let history: Result<Vec<EntityHistoryEntry>> = rows                  .into_iter() -                .map(|(eg_row, cl_row, e_row)| { +                .map(|(eg_row, cl_row, e_row, editor_row)| { +                    let editor = editor_row.into_model();                      Ok(EntityHistoryEntry {                          edit: e_row.into_model()?, -                        editgroup: eg_row.into_model_partial(None), +                        editgroup: eg_row.into_model_partial(Some(cl_row.id), Some(editor)),                          changelog_entry: cl_row.into_model(),                      })                  }) | 
