StackdriverMetricFindQuery.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { extractServicesFromMetricDescriptors, getMetricTypesByService } from './functions';
  2. export default class StackdriverMetricFindQuery {
  3. constructor(private datasource) {}
  4. async query(query: any) {
  5. switch (query.type) {
  6. case 'services':
  7. return this.handleServiceQueryType();
  8. case 'metricTypes':
  9. return this.handleMetricTypesQueryType(query);
  10. default:
  11. return [];
  12. }
  13. }
  14. async handleServiceQueryType() {
  15. const metricDescriptors = await this.datasource.getMetricTypes(this.datasource.projectName);
  16. const services = extractServicesFromMetricDescriptors(metricDescriptors);
  17. return services.map(s => ({
  18. text: s.name,
  19. expandable: true,
  20. }));
  21. }
  22. async handleMetricTypesQueryType({ service }) {
  23. if (!service) {
  24. return [];
  25. }
  26. const metricDescriptors = await this.datasource.getMetricTypes(this.datasource.projectName);
  27. return getMetricTypesByService(metricDescriptors, service).map(s => ({
  28. text: s.name,
  29. expandable: true,
  30. }));
  31. }
  32. }