graphql-analyzer 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 495b6fc8f408e0e735bba5da4c41d0f5e2ccabeb
4
- data.tar.gz: 1aac9d6076edeb2a18fa860de1bb8075ee6b7f4f
3
+ metadata.gz: c4b7a368bf9b13b15f3deb07a30e5852388ee533
4
+ data.tar.gz: 41b2ac8e242bf559702490e2115d69b805297eff
5
5
  SHA512:
6
- metadata.gz: 81b1e60dd96bbbe51d5e22dc1082b79525d3230fb2ead1c7c58a464f83613fea5c37e3afa1b94abe296d0ecb4d91a37606f05afec68e3b157c41b0ce0b85b9e8
7
- data.tar.gz: 87aa1755c052f2a6450b9c26a8d541969ff09d591bbe7744366d5a5e6c7e0007dafdb47fbc9df8f49df174820783f63659c12dfb880d2252e32d9f9e54d94ead
6
+ metadata.gz: cd93aab10263c3289d24baeedf477a0422e22c8f376f3043c4e0fbd9444667f7cd52ec6e3126e903eed410e0dcf7455fe6dc8be178e581e2d6a4b7ec4b040c78
7
+ data.tar.gz: ff215a5a7a08818b77dc0efcca5fc6dcb619a86f874c3eb2bf5ce69a1e6ee7319a5546a987e8b991c6ba3130d5617c430e35b0a8352de3bf8910dcf9d0b68590
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "factory_bot"
30
30
  spec.add_development_dependency "pry-byebug"
31
31
  spec.add_development_dependency "activerecord"
32
+ spec.add_development_dependency "activesupport"
32
33
  spec.add_development_dependency "mysql2"
33
34
  spec.add_development_dependency "sqlite3"
34
35
  spec.add_development_dependency "pg", "~> 0.18"
@@ -1,6 +1,7 @@
1
1
  require "graphql"
2
2
  require "graphql/analyzer/version"
3
3
  require "graphql/analyzer/instrumentation/base"
4
+ require "graphql/analyzer/instrumentation/elastic_search"
4
5
  require "graphql/analyzer/instrumentation/mysql"
5
6
  require "graphql/analyzer/instrumentation/postgresql"
6
7
  require "graphql/analyzer/instrumentation/sqlite3"
@@ -0,0 +1,43 @@
1
+ module GraphQL
2
+ class Analyzer
3
+ module Instrumentation
4
+ class ElasticSearch
5
+ def initialize
6
+ @notifications = []
7
+ ActiveSupport::Notifications.subscribe('search.elasticsearch') do |name, start, finish, id, payload|
8
+ @notifications << {
9
+ name: name,
10
+ start: start,
11
+ finish: finish,
12
+ id: id,
13
+ payload: payload
14
+ }
15
+ end
16
+ end
17
+
18
+ def instrument(type, field)
19
+ ->(obj, args, ctx) do
20
+ result = field.resolve_proc.call(obj, args, ctx)
21
+
22
+ if @notifications.any?
23
+ # TODO: Merge results when a field makes two types of queries
24
+ # e.g. path: ['user', 'name'] makes a SQL and ES Query.
25
+ ctx['graphql-analyzer']['resolvers'] << {
26
+ 'path' => ctx.path,
27
+ 'adapter' => 'elasticsearch',
28
+ 'parentType' => type.name,
29
+ 'fieldName' => field.name,
30
+ 'returnType' => field.type.to_s,
31
+ 'details' => @notifications
32
+ }
33
+
34
+ @notifications = []
35
+ end
36
+
37
+ result
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  module GraphQL
2
2
  class Analyzer
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-analyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - DerekStride
@@ -114,6 +114,20 @@ dependencies:
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: activesupport
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
117
131
  - !ruby/object:Gem::Dependency
118
132
  name: mysql2
119
133
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +200,7 @@ files:
186
200
  - graphql-analyzer.gemspec
187
201
  - lib/graphql/analyzer.rb
188
202
  - lib/graphql/analyzer/instrumentation/base.rb
203
+ - lib/graphql/analyzer/instrumentation/elastic_search.rb
189
204
  - lib/graphql/analyzer/instrumentation/mysql.rb
190
205
  - lib/graphql/analyzer/instrumentation/postgresql.rb
191
206
  - lib/graphql/analyzer/instrumentation/sqlite3.rb