diff options
Diffstat (limited to 'rust')
| -rw-r--r-- | rust/src/api_server.rs | 36 | ||||
| -rw-r--r-- | rust/tests/test_api_server.rs | 11 | 
2 files changed, 28 insertions, 19 deletions
| diff --git a/rust/src/api_server.rs b/rust/src/api_server.rs index b29dae69..c9c8e754 100644 --- a/rust/src/api_server.rs +++ b/rust/src/api_server.rs @@ -546,18 +546,19 @@ impl Api for Server {          };          let edit: ContainerEditRow = diesel::sql_query( -            "WITH rev AS ( INSERT INTO container_rev (name, publisher, issn) -                        VALUES ($1, $2, $3) +            "WITH rev AS ( INSERT INTO container_rev (name, publisher, issn, extra_json) +                        VALUES ($1, $2, $3, $4)                          RETURNING id ),                  ident AS ( INSERT INTO container_ident (rev_id)                              VALUES ((SELECT rev.id FROM rev))                              RETURNING id )              INSERT INTO container_edit (editgroup_id, ident_id, rev_id) VALUES -                ($4, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev)) +                ($5, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev))              RETURNING *",          ).bind::<diesel::sql_types::Text, _>(body.name)              .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.publisher)              .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.issn) +            .bind::<diesel::sql_types::Nullable<diesel::sql_types::Json>, _>(body.extra)              .bind::<diesel::sql_types::BigInt, _>(editgroup_id)              .get_result(&conn)              .unwrap(); @@ -588,17 +589,18 @@ impl Api for Server {          };          let edit: CreatorEditRow = diesel::sql_query( -            "WITH rev AS ( INSERT INTO creator_rev (name, orcid) -                        VALUES ($1, $2) +            "WITH rev AS ( INSERT INTO creator_rev (name, orcid, extra_json) +                        VALUES ($1, $2, $3)                          RETURNING id ),                  ident AS ( INSERT INTO creator_ident (rev_id)                              VALUES ((SELECT rev.id FROM rev))                              RETURNING id )              INSERT INTO creator_edit (editgroup_id, ident_id, rev_id) VALUES -                ($3, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev)) +                ($4, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev))              RETURNING *",          ).bind::<diesel::sql_types::Text, _>(body.name)              .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.orcid) +            .bind::<diesel::sql_types::Nullable<diesel::sql_types::Json>, _>(body.extra)              .bind::<diesel::sql_types::BigInt, _>(editgroup_id)              .get_result(&conn)              .unwrap(); @@ -630,18 +632,19 @@ impl Api for Server {          let edit: FileEditRow =              diesel::sql_query( -                "WITH rev AS ( INSERT INTO file_rev (size, sha1, url) -                        VALUES ($1, $2, $3) +                "WITH rev AS ( INSERT INTO file_rev (size, sha1, url, extra_json) +                        VALUES ($1, $2, $3, $4)                          RETURNING id ),                  ident AS ( INSERT INTO file_ident (rev_id)                              VALUES ((SELECT rev.id FROM rev))                              RETURNING id )              INSERT INTO file_edit (editgroup_id, ident_id, rev_id) VALUES -                ($4, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev)) +                ($5, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev))              RETURNING *",              ).bind::<diesel::sql_types::Nullable<diesel::sql_types::Int8>, _>(body.size)                  .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.sha1)                  .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.url) +                .bind::<diesel::sql_types::Nullable<diesel::sql_types::Json>, _>(body.extra)                  .bind::<diesel::sql_types::BigInt, _>(editgroup_id)                  .get_result(&conn)                  .unwrap(); @@ -695,16 +698,17 @@ impl Api for Server {          let edit: WorkEditRow =              diesel::sql_query( -                "WITH rev AS ( INSERT INTO work_rev (work_type) -                        VALUES ($1) +                "WITH rev AS ( INSERT INTO work_rev (work_type, extra_json) +                        VALUES ($1, $2)                          RETURNING id ),                  ident AS ( INSERT INTO work_ident (rev_id)                              VALUES ((SELECT rev.id FROM rev))                              RETURNING id )              INSERT INTO work_edit (editgroup_id, ident_id, rev_id) VALUES -                ($2, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev)) +                ($3, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev))              RETURNING *",              ).bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.work_type) +                .bind::<diesel::sql_types::Nullable<diesel::sql_types::Json>, _>(body.extra)                  .bind::<diesel::sql_types::BigInt, _>(editgroup_id)                  .get_result(&conn)                  .unwrap(); @@ -741,14 +745,14 @@ impl Api for Server {          };          let edit: ReleaseEditRow = diesel::sql_query( -            "WITH rev AS ( INSERT INTO release_rev (title, release_type, date, doi, volume, pages, issue, work_ident_id, container_ident_id) -                        VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) +            "WITH rev AS ( INSERT INTO release_rev (title, release_type, date, doi, volume, pages, issue, work_ident_id, container_ident_id, extra_json) +                        VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)                          RETURNING id ),                  ident AS ( INSERT INTO release_ident (rev_id)                              VALUES ((SELECT rev.id FROM rev))                              RETURNING id )              INSERT INTO release_edit (editgroup_id, ident_id, rev_id) VALUES -                ($10, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev)) +                ($11, (SELECT ident.id FROM ident), (SELECT rev.id FROM rev))              RETURNING *",          ).bind::<diesel::sql_types::Text, _>(body.title)              .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.release_type) @@ -759,8 +763,8 @@ impl Api for Server {              .bind::<diesel::sql_types::Nullable<diesel::sql_types::Text>, _>(body.issue)              .bind::<diesel::sql_types::Uuid, _>(work_id)              .bind::<diesel::sql_types::Nullable<diesel::sql_types::Uuid>, _>(container_id) +            .bind::<diesel::sql_types::Nullable<diesel::sql_types::Json>, _>(body.extra)              .bind::<diesel::sql_types::BigInt, _>(editgroup_id) -            //XXX: extra_json              .get_result(&conn)              .unwrap();          let edit = &edit; diff --git a/rust/tests/test_api_server.rs b/rust/tests/test_api_server.rs index 1ffbee90..01db031f 100644 --- a/rust/tests/test_api_server.rs +++ b/rust/tests/test_api_server.rs @@ -203,7 +203,8 @@ fn test_post_file() {                  "releases": [                      "f1f046a3-45c9-4b99-4444-000000000001",                      "f1f046a3-45c9-4b99-4444-000000000002" -                ] +                ], +                "extra": { "source": "speculation" }                  }"#,              &router,          ), @@ -257,7 +258,8 @@ fn test_post_release() {                          "contrib_type": "author"                      },{                          "creator_stub": "shorter" -                    }] +                    }], +                "extra": { "source": "speculation" }                  }"#,              &router,          ), @@ -275,7 +277,10 @@ fn test_post_work() {              "http://localhost:9411/v0/work",              headers.clone(),              // TODO: target_work_id -            r#"{"work_type": "journal-article"}"#, +            r#"{ +                "work_type": "journal-article", +                "extra": { "source": "speculation" } +            }"#,              &router,          ),          status::Created, | 
