diff --git a/src/graph/fragments/topology.ts b/src/graph/fragments/topology.ts new file mode 100644 index 00000000..ea4caf02 --- /dev/null +++ b/src/graph/fragments/topology.ts @@ -0,0 +1,113 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export const ServiceTopology = { + variable: "$duration: Duration!, $serviceId: ID!", + query: ` + topo: getServiceTopology(duration: $duration, serviceId: $serviceId) { + nodes { + id + name + type + isReal + } + calls { + id + source + detectPoints + target + } + }`, +}; +export const GlobalTopology = { + variable: "$duration: Duration!", + query: ` + topo: getGlobalTopology(duration: $duration) { + nodes { + id + name + type + isReal + } + calls { + id + source + detectPoints + target + } + }`, +}; +export const ServicesTopology = { + variable: "$duration: Duration!, $serviceIds: [ID!]!", + query: ` + topo: getServicesTopology(duration: $duration, serviceIds: $serviceIds) { + nodes { + id + name + type + isReal + } + calls { + id + source + detectPoints + target + } + }`, +}; +export const EndpointTopology = { + variable: ["$endpointId: ID!", "$duration: Duration!"], + query: ` + endpointTopology: getEndpointDependencies(endpointId: $endpointId, duration: $duration) { + nodes { + id + name + serviceId + serviceName + type + isReal + } + calls { + id + source + target + detectPoints + } + }`, +}; +export const InstanceTopology = { + variable: + "$clientServiceId: ID!, $serverServiceId: ID!, $duration: Duration!", + query: ` + topo: getServiceInstanceTopology(clientServiceId: $clientServiceId, + serverServiceId: $serverServiceId, duration: $duration) { + nodes { + id + name + type + isReal + serviceName + serviceId + } + calls { + id + source + detectPoints + target + } + } +`, +}; diff --git a/src/graph/query/topology.ts b/src/graph/query/topology.ts new file mode 100644 index 00000000..d488480d --- /dev/null +++ b/src/graph/query/topology.ts @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + InstanceTopology, + EndpointTopology, + ServiceTopology, + GlobalTopology, +} from "../fragments/topology"; + +export const getGlobalTopology = `query queryData(${GlobalTopology.variable}) {${GlobalTopology.query}}`; +export const getInstanceTopology = `query queryData(${InstanceTopology.variable}) {${InstanceTopology.query}}`; +export const getServiceTopology = `query queryData(${ServiceTopology.variable}) {${ServiceTopology.query}}`; +export const getEndpointTopology = `query queryData(${EndpointTopology.variable}) {${EndpointTopology.query}}`;