diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-25 14:03:37 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-05-25 14:03:47 -0700 |
commit | 8e92be6e1e9396f4920c0f947337e1be643e1994 (patch) | |
tree | 2891a0ed7b6c780d1e86a81462b4c10dd13fa79a | |
parent | 495a1367510be66a9409d7b56a4b632a64aeefef (diff) | |
download | fatcat-8e92be6e1e9396f4920c0f947337e1be643e1994.tar.gz fatcat-8e92be6e1e9396f4920c0f947337e1be643e1994.zip |
edit lists, refs, contribs
-rw-r--r-- | rust/fatcat-api/README.md | 2 | ||||
-rw-r--r-- | rust/fatcat-api/api.yaml | 96 | ||||
-rw-r--r-- | rust/fatcat-api/api/swagger.yaml | 175 | ||||
-rw-r--r-- | rust/fatcat-api/src/models.rs | 107 | ||||
-rw-r--r-- | rust/fatcat-openapi2.yml | 96 | ||||
-rw-r--r-- | rust/src/api_server.rs | 6 | ||||
-rw-r--r-- | rust/src/database_models.rs | 2 |
7 files changed, 402 insertions, 82 deletions
diff --git a/rust/fatcat-api/README.md b/rust/fatcat-api/README.md index 48c3aeeb..98eb45fe 100644 --- a/rust/fatcat-api/README.md +++ b/rust/fatcat-api/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.1.0 -- Build date: 2018-05-25T05:25:40.149Z +- Build date: 2018-05-25T20:55:51.247Z This autogenerated project defines an API crate `fatcat` which contains: * An `Api` trait defining the API in Rust. diff --git a/rust/fatcat-api/api.yaml b/rust/fatcat-api/api.yaml index 14c94f35..30e0f44d 100644 --- a/rust/fatcat-api/api.yaml +++ b/rust/fatcat-api/api.yaml @@ -152,6 +152,16 @@ definitions: issue: type: string example: "12" + contribs: + type: array + items: + type: string + #$ref: "#/definitions/release_contrib" + refs: + type: array + items: + type: string + #$ref: "#/definitions/release_ref" work_entity: type: object properties: @@ -186,45 +196,29 @@ definitions: extra: type: object additionalProperties: {} -# container_edits: -# type: array -# item: -# type: integer -# format: int64 -# properties: -# edit_id: -# type: integer -# example: 847 -# format: int64 -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# creators: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# files: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# releases: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# works: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS + edits: + type: object + properties: + containers: + type: array + items: + $ref: "#/definitions/entity_edit" + creators: + type: array + items: + $ref: "#/definitions/entity_edit" + files: + type: array + items: + $ref: "#/definitions/entity_edit" + releases: + type: array + items: + $ref: "#/definitions/entity_edit" + works: + type: array + items: + $ref: "#/definitions/entity_edit" changelogentries: type: array items: @@ -243,6 +237,30 @@ definitions: timestamp: type: string format: date-time + release_ref: + type: object + properties: + index: + type: integer + format: int64 + target_release_id: + type: string + #format: uuid + stub: + type: string + release_contrib: + type: object + properties: + index: + type: integer + format: int64 + creator_id: + type: string + #format: uuid + creator_stub: + type: string + contrib_type: + type: string x-entity-responses: &ENTITYRESPONSES 400: diff --git a/rust/fatcat-api/api/swagger.yaml b/rust/fatcat-api/api/swagger.yaml index 993df05c..f173c53d 100644 --- a/rust/fatcat-api/api/swagger.yaml +++ b/rust/fatcat-api/api/swagger.yaml @@ -1166,6 +1166,14 @@ definitions: - "title" - "work_id" properties: + refs: + type: "array" + items: + type: "string" + contribs: + type: "array" + items: + type: "string" issue: type: "string" example: "12" @@ -1217,9 +1225,15 @@ definitions: ident: "f1f046a3-45c9-4b99-adce-000000000001" release_type: "preprint" title: "title" + contribs: + - "contribs" + - "contribs" revision: 42 volume: "volume" pages: "pages" + refs: + - "refs" + - "refs" extra: "{}" editgroup_id: 16 state: "wip" @@ -1316,8 +1330,66 @@ definitions: type: "string" extra: type: "object" + edits: + $ref: "#/definitions/editgroup_edits" example: extra: "{}" + edits: + works: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + creators: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + files: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + containers: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + releases: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 description: "description" editor_id: 6 id: 0 @@ -1327,6 +1399,109 @@ definitions: items: $ref: "#/definitions/changelogentries_inner" upperCaseName: "CHANGELOGENTRIES" + release_ref: + type: "object" + properties: + index: + type: "integer" + format: "int64" + target_release_id: + type: "string" + stub: + type: "string" + upperCaseName: "RELEASE_REF" + release_contrib: + type: "object" + properties: + index: + type: "integer" + format: "int64" + creator_id: + type: "string" + creator_stub: + type: "string" + contrib_type: + type: "string" + upperCaseName: "RELEASE_CONTRIB" + editgroup_edits: + properties: + containers: + type: "array" + items: + $ref: "#/definitions/entity_edit" + creators: + type: "array" + items: + $ref: "#/definitions/entity_edit" + files: + type: "array" + items: + $ref: "#/definitions/entity_edit" + releases: + type: "array" + items: + $ref: "#/definitions/entity_edit" + works: + type: "array" + items: + $ref: "#/definitions/entity_edit" + example: + works: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + creators: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + files: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + containers: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + releases: + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + - ident: "f1f046a3-45c9-4b99-adce-000000000001" + extra: "{}" + edit_id: 847 + editgroup_id: 16 + revision: 42 + upperCaseName: "EDITGROUP_EDITS" changelogentries_inner: required: - "editgroup_id" diff --git a/rust/fatcat-api/src/models.rs b/rust/fatcat-api/src/models.rs index 6c13e091..5118872f 100644 --- a/rust/fatcat-api/src/models.rs +++ b/rust/fatcat-api/src/models.rs @@ -1,7 +1,7 @@ #![allow(unused_imports, unused_qualifications, unused_extern_crates)] extern crate chrono; -extern crate uuid; extern crate serde_json; +extern crate uuid; use serde::ser::Serializer; @@ -213,6 +213,10 @@ pub struct Editgroup { #[serde(rename = "extra")] #[serde(skip_serializing_if = "Option::is_none")] pub extra: Option<serde_json::Value>, + + #[serde(rename = "edits")] + #[serde(skip_serializing_if = "Option::is_none")] + pub edits: Option<models::EditgroupEdits>, } impl Editgroup { @@ -222,6 +226,42 @@ impl Editgroup { editor_id: editor_id, description: None, extra: None, + edits: None, + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct EditgroupEdits { + #[serde(rename = "containers")] + #[serde(skip_serializing_if = "Option::is_none")] + pub containers: Option<Vec<models::EntityEdit>>, + + #[serde(rename = "creators")] + #[serde(skip_serializing_if = "Option::is_none")] + pub creators: Option<Vec<models::EntityEdit>>, + + #[serde(rename = "files")] + #[serde(skip_serializing_if = "Option::is_none")] + pub files: Option<Vec<models::EntityEdit>>, + + #[serde(rename = "releases")] + #[serde(skip_serializing_if = "Option::is_none")] + pub releases: Option<Vec<models::EntityEdit>>, + + #[serde(rename = "works")] + #[serde(skip_serializing_if = "Option::is_none")] + pub works: Option<Vec<models::EntityEdit>>, +} + +impl EditgroupEdits { + pub fn new() -> EditgroupEdits { + EditgroupEdits { + containers: None, + creators: None, + files: None, + releases: None, + works: None, } } } @@ -342,7 +382,45 @@ impl FileEntity { } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ReleaseContrib { + #[serde(rename = "index")] + #[serde(skip_serializing_if = "Option::is_none")] + pub index: Option<i64>, + + #[serde(rename = "creator_id")] + #[serde(skip_serializing_if = "Option::is_none")] + pub creator_id: Option<String>, + + #[serde(rename = "creator_stub")] + #[serde(skip_serializing_if = "Option::is_none")] + pub creator_stub: Option<String>, + + #[serde(rename = "contrib_type")] + #[serde(skip_serializing_if = "Option::is_none")] + pub contrib_type: Option<String>, +} + +impl ReleaseContrib { + pub fn new() -> ReleaseContrib { + ReleaseContrib { + index: None, + creator_id: None, + creator_stub: None, + contrib_type: None, + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct ReleaseEntity { + #[serde(rename = "refs")] + #[serde(skip_serializing_if = "Option::is_none")] + pub refs: Option<Vec<String>>, + + #[serde(rename = "contribs")] + #[serde(skip_serializing_if = "Option::is_none")] + pub contribs: Option<Vec<String>>, + #[serde(rename = "issue")] #[serde(skip_serializing_if = "Option::is_none")] pub issue: Option<String>, @@ -402,6 +480,8 @@ pub struct ReleaseEntity { impl ReleaseEntity { pub fn new(work_id: String, title: String) -> ReleaseEntity { ReleaseEntity { + refs: None, + contribs: None, issue: None, pages: None, volume: None, @@ -421,6 +501,31 @@ impl ReleaseEntity { } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct ReleaseRef { + #[serde(rename = "index")] + #[serde(skip_serializing_if = "Option::is_none")] + pub index: Option<i64>, + + #[serde(rename = "target_release_id")] + #[serde(skip_serializing_if = "Option::is_none")] + pub target_release_id: Option<String>, + + #[serde(rename = "stub")] + #[serde(skip_serializing_if = "Option::is_none")] + pub stub: Option<String>, +} + +impl ReleaseRef { + pub fn new() -> ReleaseRef { + ReleaseRef { + index: None, + target_release_id: None, + stub: None, + } + } +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct Success { #[serde(rename = "message")] pub message: String, diff --git a/rust/fatcat-openapi2.yml b/rust/fatcat-openapi2.yml index 14c94f35..30e0f44d 100644 --- a/rust/fatcat-openapi2.yml +++ b/rust/fatcat-openapi2.yml @@ -152,6 +152,16 @@ definitions: issue: type: string example: "12" + contribs: + type: array + items: + type: string + #$ref: "#/definitions/release_contrib" + refs: + type: array + items: + type: string + #$ref: "#/definitions/release_ref" work_entity: type: object properties: @@ -186,45 +196,29 @@ definitions: extra: type: object additionalProperties: {} -# container_edits: -# type: array -# item: -# type: integer -# format: int64 -# properties: -# edit_id: -# type: integer -# example: 847 -# format: int64 -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# creators: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# files: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# releases: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS -# works: -# type: array -# items: -# type: object -# proposeties: -# <<: *ENTITYEDITPROPS + edits: + type: object + properties: + containers: + type: array + items: + $ref: "#/definitions/entity_edit" + creators: + type: array + items: + $ref: "#/definitions/entity_edit" + files: + type: array + items: + $ref: "#/definitions/entity_edit" + releases: + type: array + items: + $ref: "#/definitions/entity_edit" + works: + type: array + items: + $ref: "#/definitions/entity_edit" changelogentries: type: array items: @@ -243,6 +237,30 @@ definitions: timestamp: type: string format: date-time + release_ref: + type: object + properties: + index: + type: integer + format: int64 + target_release_id: + type: string + #format: uuid + stub: + type: string + release_contrib: + type: object + properties: + index: + type: integer + format: int64 + creator_id: + type: string + #format: uuid + creator_stub: + type: string + contrib_type: + type: string x-entity-responses: &ENTITYRESPONSES 400: diff --git a/rust/src/api_server.rs b/rust/src/api_server.rs index 8364ec8c..a2e133fe 100644 --- a/rust/src/api_server.rs +++ b/rust/src/api_server.rs @@ -305,6 +305,8 @@ impl Server { issue: rev.issue, container_id: rev.container_ident_id.map(|u| u.to_string()), work_id: rev.work_ident_id.to_string(), + refs: None, + contribs: None, state: Some(ident.state().unwrap().shortname()), ident: Some(ident.id.to_string()), revision: ident.rev_id, @@ -341,6 +343,8 @@ impl Server { issue: rev.issue, container_id: rev.container_ident_id.map(|u| u.to_string()), work_id: rev.work_ident_id.to_string(), + refs: None, + contribs: None, state: Some(ident.state().unwrap().shortname()), ident: Some(ident.id.to_string()), revision: ident.rev_id, @@ -360,6 +364,7 @@ impl Server { id: Some(row.id), editor_id: row.editor_id, description: row.description, + edits: None, extra: row.extra_json, }; Ok(Some(eg)) @@ -716,6 +721,7 @@ impl Api for Server { id: Some(row.id), editor_id: row.editor_id, description: row.description, + edits: None, extra: row.extra_json, }; Box::new(futures::done(Ok( diff --git a/rust/src/database_models.rs b/rust/src/database_models.rs index aaf21ce0..5e4e9710 100644 --- a/rust/src/database_models.rs +++ b/rust/src/database_models.rs @@ -167,7 +167,6 @@ pub struct ReleaseRefRow { stub: Option<String>, } -/* #[derive(Debug, Queryable, Identifiable, Associations, AsChangeset)] #[table_name = "file_release"] pub struct FileReleaseRow { @@ -175,7 +174,6 @@ pub struct FileReleaseRow { file_rev: i64, target_release_ident_id: Uuid, } -*/ #[derive(Debug, Queryable, Identifiable, Associations, AsChangeset)] #[table_name = "editgroup"] |