diff options
Diffstat (limited to 'rust')
-rw-r--r-- | rust/fatcat-api-spec/README.md | 3 | ||||
-rw-r--r-- | rust/fatcat-api-spec/api.yaml | 23 | ||||
-rw-r--r-- | rust/fatcat-api-spec/api/swagger.yaml | 42 | ||||
-rw-r--r-- | rust/fatcat-api-spec/examples/client.rs | 8 | ||||
-rw-r--r-- | rust/fatcat-api-spec/examples/server_lib/server.rs | 8 | ||||
-rw-r--r-- | rust/fatcat-api-spec/src/client.rs | 51 | ||||
-rw-r--r-- | rust/fatcat-api-spec/src/lib.rs | 16 | ||||
-rw-r--r-- | rust/fatcat-api-spec/src/mimetypes.rs | 8 | ||||
-rw-r--r-- | rust/fatcat-api-spec/src/models.rs | 13 | ||||
-rw-r--r-- | rust/fatcat-api-spec/src/server.rs | 60 | ||||
-rw-r--r-- | rust/src/api_server.rs | 84 | ||||
-rw-r--r-- | rust/src/api_wrappers.rs | 19 | ||||
-rw-r--r-- | rust/tests/test_api_server_http.rs | 20 |
13 files changed, 10 insertions, 345 deletions
diff --git a/rust/fatcat-api-spec/README.md b/rust/fatcat-api-spec/README.md index 06d32720..446742be 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.1.0 -- Build date: 2018-12-24T23:35:32.113Z +- Build date: 2018-12-25T00:18:05.291Z This autogenerated project defines an API crate `fatcat` which contains: * An `Api` trait defining the API in Rust. @@ -81,7 +81,6 @@ cargo run --example client LookupCreator cargo run --example client UpdateCreator cargo run --example client GetEditor cargo run --example client GetEditorChangelog -cargo run --example client GetStats cargo run --example client AcceptEditgroup cargo run --example client CreateEditgroup cargo run --example client GetChangelog diff --git a/rust/fatcat-api-spec/api.yaml b/rust/fatcat-api-spec/api.yaml index b514da49..018b58e9 100644 --- a/rust/fatcat-api-spec/api.yaml +++ b/rust/fatcat-api-spec/api.yaml @@ -416,12 +416,6 @@ definitions: additionalProperties: {} role: type: string - stats_response: - type: object - properties: - extra: - type: object - additionalProperties: {} x-entity-responses: &ENTITYRESPONSES 400: @@ -1910,20 +1904,3 @@ paths: description: Generic Error schema: $ref: "#/definitions/error_response" - /stats: - get: - operationId: "get_stats" - parameters: - - name: more - in: query - type: string - required: false - responses: - 200: - description: Success - schema: - $ref: "#/definitions/stats_response" - 500: - description: Generic Error - schema: - $ref: "#/definitions/error_response" diff --git a/rust/fatcat-api-spec/api/swagger.yaml b/rust/fatcat-api-spec/api/swagger.yaml index 610c8193..141841f4 100644 --- a/rust/fatcat-api-spec/api/swagger.yaml +++ b/rust/fatcat-api-spec/api/swagger.yaml @@ -4135,40 +4135,6 @@ paths: path: "/changelog/:index" HttpMethod: "Get" httpmethod: "get" - /stats: - get: - operationId: "get_stats" - parameters: - - name: "more" - in: "query" - required: false - type: "string" - formatString: "{:?}" - example: "Some(\"more_example\".to_string())" - responses: - 200: - description: "Success" - schema: - $ref: "#/definitions/stats_response" - x-responseId: "Success" - x-uppercaseResponseId: "SUCCESS" - uppercase_operation_id: "GET_STATS" - uppercase_data_type: "STATSRESPONSE" - producesJson: true - 500: - description: "Generic Error" - schema: - $ref: "#/definitions/error_response" - x-responseId: "GenericError" - x-uppercaseResponseId: "GENERIC_ERROR" - uppercase_operation_id: "GET_STATS" - uppercase_data_type: "ERRORRESPONSE" - producesJson: true - operation_id: "get_stats" - uppercase_operation_id: "GET_STATS" - path: "/stats" - HttpMethod: "Get" - httpmethod: "get" definitions: error_response: type: "object" @@ -5206,14 +5172,6 @@ definitions: creator_id: "creator_id" index: 1 upperCaseName: "RELEASE_CONTRIB" - stats_response: - type: "object" - properties: - extra: - type: "object" - example: - extra: "{}" - upperCaseName: "STATS_RESPONSE" file_entity_urls: required: - "rel" diff --git a/rust/fatcat-api-spec/examples/client.rs b/rust/fatcat-api-spec/examples/client.rs index 348666dc..34131db7 100644 --- a/rust/fatcat-api-spec/examples/client.rs +++ b/rust/fatcat-api-spec/examples/client.rs @@ -18,7 +18,7 @@ use fatcat::{ DeleteWorkResponse, GetChangelogEntryResponse, GetChangelogResponse, GetContainerEditResponse, GetContainerHistoryResponse, GetContainerRedirectsResponse, GetContainerResponse, GetContainerRevisionResponse, GetCreatorEditResponse, GetCreatorHistoryResponse, GetCreatorRedirectsResponse, GetCreatorReleasesResponse, GetCreatorResponse, GetCreatorRevisionResponse, GetEditgroupResponse, GetEditorChangelogResponse, GetEditorResponse, GetFileEditResponse, GetFileHistoryResponse, GetFileRedirectsResponse, GetFileResponse, GetFileRevisionResponse, - GetReleaseEditResponse, GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetStatsResponse, GetWorkEditResponse, + GetReleaseEditResponse, GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetWorkEditResponse, GetWorkHistoryResponse, GetWorkRedirectsResponse, GetWorkReleasesResponse, GetWorkResponse, GetWorkRevisionResponse, LookupContainerResponse, LookupCreatorResponse, LookupFileResponse, LookupReleaseResponse, UpdateContainerResponse, UpdateCreatorResponse, UpdateFileResponse, UpdateReleaseResponse, UpdateWorkResponse, }; @@ -52,7 +52,6 @@ fn main() { "LookupCreator", "GetEditor", "GetEditorChangelog", - "GetStats", "AcceptEditgroup", "GetChangelog", "GetChangelogEntry", @@ -261,11 +260,6 @@ fn main() { println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from("<none>"))); } - Some("GetStats") => { - let result = client.get_stats(Some("more_example".to_string())).wait(); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from("<none>"))); - } - Some("AcceptEditgroup") => { let result = client.accept_editgroup("editgroup_id_example".to_string()).wait(); println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from("<none>"))); diff --git a/rust/fatcat-api-spec/examples/server_lib/server.rs b/rust/fatcat-api-spec/examples/server_lib/server.rs index 62ec88b8..bbd00b83 100644 --- a/rust/fatcat-api-spec/examples/server_lib/server.rs +++ b/rust/fatcat-api-spec/examples/server_lib/server.rs @@ -17,7 +17,7 @@ use fatcat::{ GetChangelogEntryResponse, GetChangelogResponse, GetContainerEditResponse, GetContainerHistoryResponse, GetContainerRedirectsResponse, GetContainerResponse, GetContainerRevisionResponse, GetCreatorEditResponse, GetCreatorHistoryResponse, GetCreatorRedirectsResponse, GetCreatorReleasesResponse, GetCreatorResponse, GetCreatorRevisionResponse, GetEditgroupResponse, GetEditorChangelogResponse, GetEditorResponse, GetFileEditResponse, GetFileHistoryResponse, GetFileRedirectsResponse, GetFileResponse, GetFileRevisionResponse, GetReleaseEditResponse, - GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetStatsResponse, GetWorkEditResponse, GetWorkHistoryResponse, + GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetWorkEditResponse, GetWorkHistoryResponse, GetWorkRedirectsResponse, GetWorkReleasesResponse, GetWorkResponse, GetWorkRevisionResponse, LookupContainerResponse, LookupCreatorResponse, LookupFileResponse, LookupReleaseResponse, UpdateContainerResponse, UpdateCreatorResponse, UpdateFileResponse, UpdateReleaseResponse, UpdateWorkResponse, }; @@ -305,12 +305,6 @@ impl Api for Server { Box::new(futures::failed("Generic failure".into())) } - fn get_stats(&self, more: Option<String>, context: &Context) -> Box<Future<Item = GetStatsResponse, Error = ApiError> + Send> { - let context = context.clone(); - println!("get_stats({:?}) - X-Span-ID: {:?}", more, context.x_span_id.unwrap_or(String::from("<none>")).clone()); - Box::new(futures::failed("Generic failure".into())) - } - fn accept_editgroup(&self, editgroup_id: String, context: &Context) -> Box<Future<Item = AcceptEditgroupResponse, Error = ApiError> + Send> { let context = context.clone(); println!("accept_editgroup(\"{}\") - X-Span-ID: {:?}", editgroup_id, context.x_span_id.unwrap_or(String::from("<none>")).clone()); diff --git a/rust/fatcat-api-spec/src/client.rs b/rust/fatcat-api-spec/src/client.rs index eddd99fa..1898f0b5 100644 --- a/rust/fatcat-api-spec/src/client.rs +++ b/rust/fatcat-api-spec/src/client.rs @@ -41,7 +41,7 @@ use { GetChangelogEntryResponse, GetChangelogResponse, GetContainerEditResponse, GetContainerHistoryResponse, GetContainerRedirectsResponse, GetContainerResponse, GetContainerRevisionResponse, GetCreatorEditResponse, GetCreatorHistoryResponse, GetCreatorRedirectsResponse, GetCreatorReleasesResponse, GetCreatorResponse, GetCreatorRevisionResponse, GetEditgroupResponse, GetEditorChangelogResponse, GetEditorResponse, GetFileEditResponse, GetFileHistoryResponse, GetFileRedirectsResponse, GetFileResponse, GetFileRevisionResponse, GetReleaseEditResponse, - GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetStatsResponse, GetWorkEditResponse, GetWorkHistoryResponse, + GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetWorkEditResponse, GetWorkHistoryResponse, GetWorkRedirectsResponse, GetWorkReleasesResponse, GetWorkResponse, GetWorkRevisionResponse, LookupContainerResponse, LookupCreatorResponse, LookupFileResponse, LookupReleaseResponse, UpdateContainerResponse, UpdateCreatorResponse, UpdateFileResponse, UpdateReleaseResponse, UpdateWorkResponse, }; @@ -1935,55 +1935,6 @@ impl Api for Client { Box::new(futures::done(result)) } - fn get_stats(&self, param_more: Option<String>, context: &Context) -> Box<Future<Item = GetStatsResponse, Error = ApiError> + Send> { - // Query parameters - let query_more = param_more.map_or_else(String::new, |query| format!("more={more}&", more = query.to_string())); - - let url = format!("{}/v0/stats?{more}", self.base_path, more = utf8_percent_encode(&query_more, QUERY_ENCODE_SET)); - - let hyper_client = (self.hyper_client)(); - let request = hyper_client.request(hyper::method::Method::Get, &url); - let mut custom_headers = hyper::header::Headers::new(); - - context.x_span_id.as_ref().map(|header| custom_headers.set(XSpanId(header.clone()))); - - let request = request.headers(custom_headers); - - // Helper function to provide a code block to use `?` in (to be replaced by the `catch` block when it exists). - fn parse_response(mut response: hyper::client::response::Response) -> Result<GetStatsResponse, ApiError> { - match response.status.to_u16() { - 200 => { - let mut buf = String::new(); - response.read_to_string(&mut buf).map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?; - let body = serde_json::from_str::<models::StatsResponse>(&buf)?; - - Ok(GetStatsResponse::Success(body)) - } - 500 => { - let mut buf = String::new(); - response.read_to_string(&mut buf).map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?; - let body = serde_json::from_str::<models::ErrorResponse>(&buf)?; - - Ok(GetStatsResponse::GenericError(body)) - } - code => { - let mut buf = [0; 100]; - let debug_body = match response.read(&mut buf) { - Ok(len) => match str::from_utf8(&buf[..len]) { - Ok(body) => Cow::from(body), - Err(_) => Cow::from(format!("<Body was not UTF8: {:?}>", &buf[..len].to_vec())), - }, - Err(e) => Cow::from(format!("<Failed to read body: {}>", e)), - }; - Err(ApiError(format!("Unexpected response code {}:\n{:?}\n\n{}", code, response.headers, debug_body))) - } - } - } - - let result = request.send().map_err(|e| ApiError(format!("No response received: {}", e))).and_then(parse_response); - Box::new(futures::done(result)) - } - fn accept_editgroup(&self, param_editgroup_id: String, context: &Context) -> Box<Future<Item = AcceptEditgroupResponse, Error = ApiError> + Send> { let url = format!( "{}/v0/editgroup/{editgroup_id}/accept", diff --git a/rust/fatcat-api-spec/src/lib.rs b/rust/fatcat-api-spec/src/lib.rs index ba578224..4ba734b1 100644 --- a/rust/fatcat-api-spec/src/lib.rs +++ b/rust/fatcat-api-spec/src/lib.rs @@ -333,14 +333,6 @@ pub enum GetEditorChangelogResponse { } #[derive(Debug, PartialEq)] -pub enum GetStatsResponse { - /// Success - Success(models::StatsResponse), - /// Generic Error - GenericError(models::ErrorResponse), -} - -#[derive(Debug, PartialEq)] pub enum AcceptEditgroupResponse { /// Merged Successfully MergedSuccessfully(models::Success), @@ -881,8 +873,6 @@ pub trait Api { fn get_editor_changelog(&self, editor_id: String, context: &Context) -> Box<Future<Item = GetEditorChangelogResponse, Error = ApiError> + Send>; - fn get_stats(&self, more: Option<String>, context: &Context) -> Box<Future<Item = GetStatsResponse, Error = ApiError> + Send>; - fn accept_editgroup(&self, editgroup_id: String, context: &Context) -> Box<Future<Item = AcceptEditgroupResponse, Error = ApiError> + Send>; fn create_editgroup(&self, editgroup: models::Editgroup, context: &Context) -> Box<Future<Item = CreateEditgroupResponse, Error = ApiError> + Send>; @@ -1067,8 +1057,6 @@ pub trait ApiNoContext { fn get_editor_changelog(&self, editor_id: String) -> Box<Future<Item = GetEditorChangelogResponse, Error = ApiError> + Send>; - fn get_stats(&self, more: Option<String>) -> Box<Future<Item = GetStatsResponse, Error = ApiError> + Send>; - fn accept_editgroup(&self, editgroup_id: String) -> Box<Future<Item = AcceptEditgroupResponse, Error = ApiError> + Send>; fn create_editgroup(&self, editgroup: models::Editgroup) -> Box<Future<Item = CreateEditgroupResponse, Error = ApiError> + Send>; @@ -1302,10 +1290,6 @@ impl<'a, T: Api> ApiNoContext for ContextWrapper<'a, T> { self.api().get_editor_changelog(editor_id, &self.context()) } - fn get_stats(&self, more: Option<String>) -> Box<Future<Item = GetStatsResponse, Error = ApiError> + Send> { - self.api().get_stats(more, &self.context()) - } - fn accept_editgroup(&self, editgroup_id: String) -> Box<Future<Item = AcceptEditgroupResponse, Error = ApiError> + Send> { self.api().accept_editgroup(editgroup_id, &self.context()) } diff --git a/rust/fatcat-api-spec/src/mimetypes.rs b/rust/fatcat-api-spec/src/mimetypes.rs index b94aa6f6..20d3331c 100644 --- a/rust/fatcat-api-spec/src/mimetypes.rs +++ b/rust/fatcat-api-spec/src/mimetypes.rs @@ -404,14 +404,6 @@ pub mod responses { lazy_static! { pub static ref GET_EDITOR_CHANGELOG_GENERIC_ERROR: Mime = mime!(Application / Json); } - /// Create Mime objects for the response content types for GetStats - lazy_static! { - pub static ref GET_STATS_SUCCESS: Mime = mime!(Application / Json); - } - /// Create Mime objects for the response content types for GetStats - lazy_static! { - pub static ref GET_STATS_GENERIC_ERROR: Mime = mime!(Application / Json); - } /// Create Mime objects for the response content types for AcceptEditgroup lazy_static! { pub static ref ACCEPT_EDITGROUP_MERGED_SUCCESSFULLY: Mime = mime!(Application / Json); diff --git a/rust/fatcat-api-spec/src/models.rs b/rust/fatcat-api-spec/src/models.rs index d640be42..8f3e525a 100644 --- a/rust/fatcat-api-spec/src/models.rs +++ b/rust/fatcat-api-spec/src/models.rs @@ -723,19 +723,6 @@ impl ReleaseRef { } #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct StatsResponse { - #[serde(rename = "extra")] - #[serde(skip_serializing_if = "Option::is_none")] - pub extra: Option<serde_json::Value>, -} - -impl StatsResponse { - pub fn new() -> StatsResponse { - StatsResponse { extra: None } - } -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct Success { #[serde(rename = "message")] pub message: String, diff --git a/rust/fatcat-api-spec/src/server.rs b/rust/fatcat-api-spec/src/server.rs index 6dec84b9..51b1ac45 100644 --- a/rust/fatcat-api-spec/src/server.rs +++ b/rust/fatcat-api-spec/src/server.rs @@ -43,7 +43,7 @@ use { GetChangelogEntryResponse, GetChangelogResponse, GetContainerEditResponse, GetContainerHistoryResponse, GetContainerRedirectsResponse, GetContainerResponse, GetContainerRevisionResponse, GetCreatorEditResponse, GetCreatorHistoryResponse, GetCreatorRedirectsResponse, GetCreatorReleasesResponse, GetCreatorResponse, GetCreatorRevisionResponse, GetEditgroupResponse, GetEditorChangelogResponse, GetEditorResponse, GetFileEditResponse, GetFileHistoryResponse, GetFileRedirectsResponse, GetFileResponse, GetFileRevisionResponse, GetReleaseEditResponse, - GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetStatsResponse, GetWorkEditResponse, GetWorkHistoryResponse, + GetReleaseFilesResponse, GetReleaseHistoryResponse, GetReleaseRedirectsResponse, GetReleaseResponse, GetReleaseRevisionResponse, GetWorkEditResponse, GetWorkHistoryResponse, GetWorkRedirectsResponse, GetWorkReleasesResponse, GetWorkResponse, GetWorkRevisionResponse, LookupContainerResponse, LookupCreatorResponse, LookupFileResponse, LookupReleaseResponse, UpdateContainerResponse, UpdateCreatorResponse, UpdateFileResponse, UpdateReleaseResponse, UpdateWorkResponse, }; @@ -2507,64 +2507,6 @@ where ); let api_clone = api.clone(); - router.get( - "/v0/stats", - move |req: &mut Request| { - let mut context = Context::default(); - - // Helper function to provide a code block to use `?` in (to be replaced by the `catch` block when it exists). - fn handle_request<T>(req: &mut Request, api: &T, context: &mut Context) -> Result<Response, Response> - where - T: Api, - { - context.x_span_id = Some(req.headers.get::<XSpanId>().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - context.auth_data = req.extensions.remove::<AuthData>(); - context.authorization = req.extensions.remove::<Authorization>(); - - // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) - let query_params = req.get::<UrlEncodedQuery>().unwrap_or_default(); - let param_more = query_params.get("more").and_then(|list| list.first()).and_then(|x| x.parse::<String>().ok()); - - match api.get_stats(param_more, context).wait() { - Ok(rsp) => match rsp { - GetStatsResponse::Success(body) => { - let body_string = serde_json::to_string(&body).expect("impossible to fail to serialize"); - - let mut response = Response::with((status::Status::from_u16(200), body_string)); - response.headers.set(ContentType(mimetypes::responses::GET_STATS_SUCCESS.clone())); - - context.x_span_id.as_ref().map(|header| response.headers.set(XSpanId(header.clone()))); - - Ok(response) - } - GetStatsResponse::GenericError(body) => { - let body_string = serde_json::to_string(&body).expect("impossible to fail to serialize"); - - let mut response = Response::with((status::Status::from_u16(500), body_string)); - response.headers.set(ContentType(mimetypes::responses::GET_STATS_GENERIC_ERROR.clone())); - - context.x_span_id.as_ref().map(|header| response.headers.set(XSpanId(header.clone()))); - - Ok(response) - } - }, - Err(_) => { - // Application code returned an error. This should not happen, as the implementation should - // return a valid response. - Err(Response::with((status::InternalServerError, "An internal error occurred".to_string()))) - } - } - } - - handle_request(req, &api_clone, &mut context).or_else(|mut response| { - context.x_span_id.as_ref().map(|header| response.headers.set(XSpanId(header.clone()))); - Ok(response) - }) - }, - "GetStats", - ); - - let api_clone = api.clone(); router.post( "/v0/editgroup/:editgroup_id/accept", move |req: &mut Request| { diff --git a/rust/src/api_server.rs b/rust/src/api_server.rs index 99db91c0..5b95f149 100644 --- a/rust/src/api_server.rs +++ b/rust/src/api_server.rs @@ -349,7 +349,11 @@ impl Server { }) } - pub fn get_editgroup_handler(&self, editgroup_id: FatCatId, conn: &DbConn) -> Result<Editgroup> { + pub fn get_editgroup_handler( + &self, + editgroup_id: FatCatId, + conn: &DbConn, + ) -> Result<Editgroup> { let row: EditgroupRow = editgroup::table.find(editgroup_id.to_uuid()).first(conn)?; let edits = EditgroupEdits { @@ -474,84 +478,6 @@ impl Server { Ok(entry) } - pub fn get_stats_handler(&self, more: &Option<String>, conn: &DbConn) -> Result<StatsResponse> { - let merged_editgroups: i64 = changelog::table - .select(diesel::dsl::count_star()) - .first(conn)?; - let releases_with_dois: i64 = release_rev::table - .inner_join(release_ident::table) - .filter(release_rev::doi.is_not_null()) - .filter(release_ident::is_live.eq(true)) - .filter(release_ident::redirect_id.is_null()) - .select(diesel::dsl::count_star()) - .first(conn)?; - let creators_with_orcids: i64 = creator_rev::table - .inner_join(creator_ident::table) - .filter(creator_rev::orcid.is_not_null()) - .filter(creator_ident::is_live.eq(true)) - .filter(creator_ident::redirect_id.is_null()) - .select(diesel::dsl::count_star()) - .first(conn)?; - let containers_with_issnls: i64 = container_rev::table - .inner_join(container_ident::table) - .filter(container_rev::issnl.is_not_null()) - .filter(container_ident::is_live.eq(true)) - .filter(container_ident::redirect_id.is_null()) - .count() - .first(conn)?; - - let files_with_releases: Option<i64> = if more.is_some() { - // this query is slightly inaccurate and over-counts: it includes files that have release - // links only to inactive releases - Some( - file_rev::table - .inner_join(file_ident::table) - .inner_join(file_release::table) - .filter(file_ident::is_live.eq(true)) - .filter(file_ident::redirect_id.is_null()) - .select(file_ident::id) - .distinct() - .count() - .first(conn)?, - ) - } else { - None - }; - let releases_with_files: Option<i64> = if more.is_some() { - // this slightly overcounts also: it will include releases which are only linked to from - // inactive files - Some( - release_ident::table - .inner_join(file_release::table) - .filter(release_ident::is_live.eq(true)) - .filter(release_ident::redirect_id.is_null()) - .select(file_release::target_release_ident_id) - .distinct() - .count() - .first(conn)?, - ) - } else { - None - }; - - let val = json!({ - "entity_counts": { - "container": count_entity!(container_ident, conn), - "creator": count_entity!(creator_ident, conn), - "file": count_entity!(file_ident, conn), - "release": count_entity!(release_ident, conn), - "work": count_entity!(work_ident, conn), - }, - "merged_editgroups": merged_editgroups, - "releases_with_dois": releases_with_dois, - "creators_with_orcids": creators_with_orcids, - "containers_with_issnls": containers_with_issnls, - "files_with_releases": files_with_releases, - "releases_with_files": releases_with_files, - }); - Ok(StatsResponse { extra: Some(val) }) - } - entity_batch_handler!(create_container_batch_handler, ContainerEntity); entity_batch_handler!(create_creator_batch_handler, CreatorEntity); entity_batch_handler!(create_file_batch_handler, FileEntity); diff --git a/rust/src/api_wrappers.rs b/rust/src/api_wrappers.rs index ed4053b9..85b698aa 100644 --- a/rust/src/api_wrappers.rs +++ b/rust/src/api_wrappers.rs @@ -914,23 +914,4 @@ impl Api for Server { }; Box::new(futures::done(Ok(ret))) } - - fn get_stats( - &self, - more: Option<String>, - _context: &Context, - ) -> Box<Future<Item = GetStatsResponse, Error = ApiError> + Send> { - let conn = self.db_pool.get().expect("db_pool error"); - // No transaction for GET - let ret = match self.get_stats_handler(&more, &conn) { - Ok(stats) => GetStatsResponse::Success(stats), - Err(e) => { - error!("{}", e); - GetStatsResponse::GenericError(ErrorResponse { - message: e.to_string(), - }) - } - }; - Box::new(futures::done(Ok(ret))) - } } diff --git a/rust/tests/test_api_server_http.rs b/rust/tests/test_api_server_http.rs index 86559545..6e4adda6 100644 --- a/rust/tests/test_api_server_http.rs +++ b/rust/tests/test_api_server_http.rs @@ -841,26 +841,6 @@ fn test_changelog() { } #[test] -fn test_stats() { - let (headers, router, _conn) = setup_http(); - - check_http_response( - request::get("http://localhost:9411/v0/stats", headers.clone(), &router), - status::Ok, - Some("merged_editgroups"), - ); - check_http_response( - request::get( - "http://localhost:9411/v0/stats?more=yes", - headers.clone(), - &router, - ), - status::Ok, - Some("merged_editgroups"), - ); -} - -#[test] fn test_400() { let (headers, router, _conn) = setup_http(); |