@@ -15,35 +15,31 @@ use graphql_client::*;
1515/// This struct is used to generate the module containing `Variables` and
1616/// `ResponseData` structs.
1717/// Snake case of this name is the mod name. i.e. publish_partial_schema_mutation
18- pub struct IsFederatedGraph ;
18+ pub ( crate ) struct IsFederatedGraph ;
1919
20- #[ derive( Debug , PartialEq ) ]
21- pub struct IsFederatedGraphResponse {
22- pub result : bool ,
23- }
24-
25- pub fn run (
20+ pub ( crate ) fn run (
2621 variables : is_federated_graph:: Variables ,
2722 client : & StudioClient ,
28- ) -> Result < IsFederatedGraphResponse , RoverClientError > {
23+ ) -> Result < bool , RoverClientError > {
24+ let graph = variables. graph_id . clone ( ) ;
2925 let data = client. post :: < IsFederatedGraph > ( variables) ?;
30- let is_federated_response = data. service . unwrap ( ) ;
31- Ok ( build_response ( is_federated_response) )
26+ build_response ( data, graph)
3227}
3328
34- type FederatedResponse = is_federated_graph:: IsFederatedGraphService ;
3529type ImplementingServices = is_federated_graph:: IsFederatedGraphServiceImplementingServices ;
3630
37- fn build_response ( service : FederatedResponse ) -> IsFederatedGraphResponse {
31+ fn build_response (
32+ data : is_federated_graph:: ResponseData ,
33+ graph : String ,
34+ ) -> Result < bool , RoverClientError > {
35+ let service = data. service . ok_or ( RoverClientError :: NoService { graph } ) ?;
3836 match service. implementing_services {
39- Some ( typename) => match typename {
40- ImplementingServices :: FederatedImplementingServices => {
41- IsFederatedGraphResponse { result : true }
42- }
43- ImplementingServices :: NonFederatedImplementingService => {
44- IsFederatedGraphResponse { result : false }
45- }
46- } ,
47- None => IsFederatedGraphResponse { result : false } ,
37+ Some ( typename) => Ok ( match typename {
38+ ImplementingServices :: FederatedImplementingServices => true ,
39+ ImplementingServices :: NonFederatedImplementingService => false ,
40+ } ) ,
41+ None => Err ( RoverClientError :: MalformedResponse {
42+ null_field : "implementing_services" . to_string ( ) ,
43+ } ) ,
4844 }
4945}
0 commit comments