From 8a130e1000a2b49cbfb571ae0b74f0ec8577e9fe Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Tue, 14 May 2019 18:43:07 -0700 Subject: codegen and rust impl created timestamp --- rust/fatcat-api-spec/README.md | 2 +- rust/fatcat-api-spec/api.yaml | 3 +++ rust/fatcat-api-spec/api/swagger.yaml | 7 +++++++ rust/fatcat-api-spec/src/models.rs | 5 +++++ rust/src/database_models.rs | 7 ++++++- rust/src/endpoint_handlers.rs | 4 +++- rust/src/entity_crud.rs | 17 +++++++++-------- 7 files changed, 34 insertions(+), 11 deletions(-) (limited to 'rust') diff --git a/rust/fatcat-api-spec/README.md b/rust/fatcat-api-spec/README.md index 93ab4016..b34efc73 100644 --- a/rust/fatcat-api-spec/README.md +++ b/rust/fatcat-api-spec/README.md @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 0.2.0 -- Build date: 2019-05-14T22:45:05.973Z +- Build date: 2019-05-15T01:33:17.197Z This autogenerated project defines an API crate `fatcat` which contains: * An `Api` trait defining the API in Rust. diff --git a/rust/fatcat-api-spec/api.yaml b/rust/fatcat-api-spec/api.yaml index e739eae1..92253e9d 100644 --- a/rust/fatcat-api-spec/api.yaml +++ b/rust/fatcat-api-spec/api.yaml @@ -530,6 +530,9 @@ definitions: type: integer example: 1048576 format: int64 + created: + type: string + format: date-time submitted: type: string format: date-time diff --git a/rust/fatcat-api-spec/api/swagger.yaml b/rust/fatcat-api-spec/api/swagger.yaml index 0b3abddd..02cdcf36 100644 --- a/rust/fatcat-api-spec/api/swagger.yaml +++ b/rust/fatcat-api-spec/api/swagger.yaml @@ -8345,6 +8345,7 @@ definitions: username: "zerocool93" changelog_index: 1048576 submitted: "2000-01-23T04:56:07.000+00:00" + created: "2000-01-23T04:56:07.000+00:00" extra: "{}" edits: works: @@ -8498,6 +8499,7 @@ definitions: username: "zerocool93" changelog_index: 1048576 submitted: "2000-01-23T04:56:07.000+00:00" + created: "2000-01-23T04:56:07.000+00:00" extra: "{}" edits: works: @@ -8748,6 +8750,9 @@ definitions: type: "integer" format: "int64" example: 1048576 + created: + type: "string" + format: "date-time" submitted: type: "string" format: "date-time" @@ -8770,6 +8775,7 @@ definitions: username: "zerocool93" changelog_index: 1048576 submitted: "2000-01-23T04:56:07.000+00:00" + created: "2000-01-23T04:56:07.000+00:00" extra: "{}" edits: works: @@ -8981,6 +8987,7 @@ definitions: username: "zerocool93" changelog_index: 1048576 submitted: "2000-01-23T04:56:07.000+00:00" + created: "2000-01-23T04:56:07.000+00:00" extra: "{}" edits: works: diff --git a/rust/fatcat-api-spec/src/models.rs b/rust/fatcat-api-spec/src/models.rs index ce559ccc..0ceed261 100644 --- a/rust/fatcat-api-spec/src/models.rs +++ b/rust/fatcat-api-spec/src/models.rs @@ -274,6 +274,10 @@ pub struct Editgroup { #[serde(skip_serializing_if = "Option::is_none")] pub changelog_index: Option, + #[serde(rename = "created")] + #[serde(skip_serializing_if = "Option::is_none")] + pub created: Option>, + #[serde(rename = "submitted")] #[serde(skip_serializing_if = "Option::is_none")] pub submitted: Option>, @@ -302,6 +306,7 @@ impl Editgroup { editor_id: None, editor: None, changelog_index: None, + created: None, submitted: None, description: None, extra: None, diff --git a/rust/src/database_models.rs b/rust/src/database_models.rs index 34ce1de6..79b0137b 100644 --- a/rust/src/database_models.rs +++ b/rust/src/database_models.rs @@ -662,12 +662,17 @@ 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, editor: Option) -> Editgroup { + pub fn into_model_partial( + self, + changelog_index: Option, + editor: Option, + ) -> Editgroup { Editgroup { editgroup_id: Some(uuid2fcid(&self.id)), editor_id: Some(uuid2fcid(&self.editor_id)), editor: editor, changelog_index: changelog_index, + created: Some(chrono::DateTime::from_utc(self.created, chrono::Utc)), submitted: self .submitted .map(|v| chrono::DateTime::from_utc(v, chrono::Utc)), diff --git a/rust/src/endpoint_handlers.rs b/rust/src/endpoint_handlers.rs index ba8505e1..5c22e21d 100644 --- a/rust/src/endpoint_handlers.rs +++ b/rust/src/endpoint_handlers.rs @@ -558,7 +558,9 @@ impl Server { .into_iter() .map(|(eg_row, cl_row, editor_row)| ChangelogEntry { index: cl_row.id, - editgroup: Some(eg_row.into_model_partial(Some(cl_row.id), Some(editor_row.into_model()))), + 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/entity_crud.rs b/rust/src/entity_crud.rs index 269bfdf6..b72ccd37 100644 --- a/rust/src/entity_crud.rs +++ b/rust/src/entity_crud.rs @@ -538,14 +538,15 @@ macro_rules! generic_db_get_history { ) -> Result> { let limit = limit.unwrap_or(50); // TODO: make a static - 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) - .get_results(conn)?; + 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) + .get_results(conn)?; let history: Result> = rows .into_iter() -- cgit v1.2.3