Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb')
-rw-r--r--app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb b/app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb
new file mode 100644
index 00000000000..a5f81149d4e
--- /dev/null
+++ b/app/graphql/resolvers/admin/analytics/usage_trends/measurements_resolver.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+module Resolvers
+ module Admin
+ module Analytics
+ module UsageTrends
+ class MeasurementsResolver < BaseResolver
+ include Gitlab::Graphql::Authorize::AuthorizeResource
+
+ type Types::Admin::Analytics::UsageTrends::MeasurementType, null: true
+
+ argument :identifier, Types::Admin::Analytics::UsageTrends::MeasurementIdentifierEnum,
+ required: true,
+ description: 'The type of measurement/statistics to retrieve.'
+
+ argument :recorded_after, Types::TimeType,
+ required: false,
+ description: 'Measurement recorded after this date.'
+
+ argument :recorded_before, Types::TimeType,
+ required: false,
+ description: 'Measurement recorded before this date.'
+
+ def resolve(identifier:, recorded_before: nil, recorded_after: nil)
+ authorize!
+
+ ::Analytics::UsageTrends::Measurement
+ .recorded_after(recorded_after)
+ .recorded_before(recorded_before)
+ .with_identifier(identifier)
+ .order_by_latest
+ end
+
+ private
+
+ def authorize!
+ admin? || raise_resource_not_available_error!
+ end
+
+ def admin?
+ context[:current_user].present? && context[:current_user].admin?
+ end
+ end
+ end
+ end
+ end
+end