activecube-graphql 0.1.16 → 0.1.20

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
  SHA256:
3
- metadata.gz: f44937cd21cc7bbe8d77a097c5d355691574a2c0510b6ed3f2c0f602056166eb
4
- data.tar.gz: 8244907400ae4e304d73a494d40576f1c1fc187f173f6fb2bd96ff1bf315b62d
3
+ metadata.gz: f40dfd438429b751590b990dd74293efaeddf44196408376568622b031996077
4
+ data.tar.gz: d457c6825398059230abacccf5c65d166929fb8feb69a3ef93abb1ff4bf99de3
5
5
  SHA512:
6
- metadata.gz: 9096d95623776426039afa5b9d05dccf1873afa1beac11d83c4050ad12e8a12ae3e8b352f452735f4b45562ec9c7ec1c80fa486e8b83e2357bbded5d63fa74ae
7
- data.tar.gz: 3bc0b34cdc95c96cbcf910520b7f8718da54dba79cb08cf60798cce57feeb1b6688529efead6030f08c05dcd03f10eaeabd9bcc48b5b3c8e329c32981e8e2cbb
6
+ metadata.gz: cd77b677c65d9ae5be1bd4b918aeb235ff0c077a0ab04e57efbbac9dac4df1fe579bdcb382dd1c6205ff0efc2bbc9c213e93bb3f3eb2377a287a8967b4a23496
7
+ data.tar.gz: 2de88d604b46cea71e7a8fe8e714ac84b060089484bdf2b7c8dbe9192eabff1cce191726d5268cde9e7673378bfd91ed0b18b2d190c6f23984bce029708e53a3
@@ -11,15 +11,15 @@
11
11
  </content>
12
12
  <orderEntry type="jdk" jdkName="RVM: ruby-2.6.3" jdkType="RUBY_SDK" />
13
13
  <orderEntry type="sourceFolder" forTests="false" />
14
- <orderEntry type="library" scope="PROVIDED" name="activecube (v0.1.28, RVM: ruby-2.6.3) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="activecube (v0.1.30, RVM: ruby-2.6.3) [gem]" level="application" />
15
15
  <orderEntry type="library" scope="PROVIDED" name="activemodel (v6.0.3.1, RVM: ruby-2.6.3) [gem]" level="application" />
16
16
  <orderEntry type="library" scope="PROVIDED" name="activerecord (v6.0.3.1, RVM: ruby-2.6.3) [gem]" level="application" />
17
17
  <orderEntry type="library" scope="PROVIDED" name="activesupport (v6.0.3.1, RVM: ruby-2.6.3) [gem]" level="application" />
18
18
  <orderEntry type="library" scope="PROVIDED" name="bundler (v1.17.3, RVM: ruby-2.6.3) [gem]" level="application" />
19
19
  <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.7, RVM: ruby-2.6.3) [gem]" level="application" />
20
20
  <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.3, RVM: ruby-2.6.3) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="graphql (v1.11.0, RVM: ruby-2.6.3) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="i18n (v1.8.5, RVM: ruby-2.6.3) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="graphql (v1.12.4, RVM: ruby-2.6.3) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v1.8.6, RVM: ruby-2.6.3) [gem]" level="application" />
23
23
  <orderEntry type="library" scope="PROVIDED" name="minitest (v5.14.2, RVM: ruby-2.6.3) [gem]" level="application" />
24
24
  <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, RVM: ruby-2.6.3) [gem]" level="application" />
25
25
  <orderEntry type="library" scope="PROVIDED" name="rspec (v3.9.0, RVM: ruby-2.6.3) [gem]" level="application" />
@@ -28,7 +28,35 @@
28
28
  <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.9.1, RVM: ruby-2.6.3) [gem]" level="application" />
29
29
  <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.9.3, RVM: ruby-2.6.3) [gem]" level="application" />
30
30
  <orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.6, RVM: ruby-2.6.3) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.7, RVM: ruby-2.6.3) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.4.0, RVM: ruby-2.6.3) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.9, RVM: ruby-2.6.3) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.4.2, RVM: ruby-2.6.3) [gem]" level="application" />
33
+ </component>
34
+ <component name="RakeTasksCache">
35
+ <option name="myRootTask">
36
+ <RakeTaskImpl id="rake">
37
+ <subtasks>
38
+ <RakeTaskImpl description="Build activecube-graphql-0.1.19.gem into the pkg directory" fullCommand="build" id="build" />
39
+ <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
40
+ <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
41
+ <RakeTaskImpl description="Build and install activecube-graphql-0.1.19.gem into system gems" fullCommand="install" id="install" />
42
+ <RakeTaskImpl id="install">
43
+ <subtasks>
44
+ <RakeTaskImpl description="Build and install activecube-graphql-0.1.19.gem into system gems without network access" fullCommand="install:local" id="local" />
45
+ </subtasks>
46
+ </RakeTaskImpl>
47
+ <RakeTaskImpl description="Create tag v0.1.19 and build and push activecube-graphql-0.1.19.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
48
+ <RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
49
+ <RakeTaskImpl description="" fullCommand="default" id="default" />
50
+ <RakeTaskImpl description="" fullCommand="release" id="release" />
51
+ <RakeTaskImpl id="release">
52
+ <subtasks>
53
+ <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
54
+ <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
55
+ <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
56
+ </subtasks>
57
+ </RakeTaskImpl>
58
+ </subtasks>
59
+ </RakeTaskImpl>
60
+ </option>
33
61
  </component>
34
62
  </module>
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activecube-graphql (0.1.15)
4
+ activecube-graphql (0.1.19)
5
5
  activecube (~> 0.1.28)
6
6
  graphql (~> 1.10)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activecube (0.1.28)
11
+ activecube (0.1.30)
12
12
  activerecord (>= 5.2)
13
13
  activemodel (6.0.3.1)
14
14
  activesupport (= 6.0.3.1)
@@ -23,8 +23,8 @@ GEM
23
23
  zeitwerk (~> 2.2, >= 2.2.2)
24
24
  concurrent-ruby (1.1.7)
25
25
  diff-lcs (1.3)
26
- graphql (1.11.0)
27
- i18n (1.8.5)
26
+ graphql (1.12.4)
27
+ i18n (1.8.6)
28
28
  concurrent-ruby (~> 1.0)
29
29
  minitest (5.14.2)
30
30
  rake (13.0.1)
@@ -42,9 +42,9 @@ GEM
42
42
  rspec-support (~> 3.9.0)
43
43
  rspec-support (3.9.3)
44
44
  thread_safe (0.3.6)
45
- tzinfo (1.2.7)
45
+ tzinfo (1.2.9)
46
46
  thread_safe (~> 0.1)
47
- zeitwerk (2.4.0)
47
+ zeitwerk (2.4.2)
48
48
 
49
49
  PLATFORMS
50
50
  ruby
@@ -49,6 +49,7 @@ module Activecube
49
49
  def execute_query tree, ctx
50
50
  cube_query = tree.build_query
51
51
  ctx[:sql_io].puts(cube_query.to_sql) if ctx[:sql_io].respond_to?(:puts)
52
+ cube_query.user_agent = ctx[:sql_user_agent] || 'Ruby/Activecube Graphql'
52
53
  cube_query.query
53
54
  end
54
55
 
@@ -6,6 +6,7 @@ module Activecube
6
6
 
7
7
  TYPENAME = '__typename'
8
8
  KEY_FIELD_PREFIX = '_aq.'
9
+ NULLABLE_OPERATORS = [:eq,:not_eq,:is,:not]
9
10
 
10
11
  attr_reader :arguments, :ast_node, :cube, :parent, :name, :definition, :key,
11
12
  :children, :metric, :dimension, :field, :context_node
@@ -18,10 +19,11 @@ module Activecube
18
19
  @key = parent ? (parent.key ? "#{parent.key}.#{name}" : KEY_FIELD_PREFIX+name ) : nil
19
20
 
20
21
  @context_node = context_node
21
- @arguments = context_node.arguments.to_h
22
-
23
22
  @ast_node = context_node.ast_node
24
23
 
24
+ @arguments = sort_node_arguments ast_node, context_node.arguments.to_h
25
+
26
+
25
27
  if parent
26
28
  @definition = context_node.definitions.first.name
27
29
  if parent.dimension
@@ -43,6 +45,22 @@ module Activecube
43
45
 
44
46
  end
45
47
 
48
+ def sort_node_arguments ast_node, arguments
49
+ if (options = arguments['options']).kind_of?(Hash)
50
+ options_keys = context_node.ast_node.arguments.detect{|x| x.name=='options'}.value.arguments.map{|x|
51
+ x.name.underscore.to_sym
52
+ }
53
+ arguments['options'] = Hash[
54
+ options_keys.collect{|key|
55
+ raise "Unmatched key #{key}" unless options[key]
56
+ [key, options[key]]
57
+ }
58
+
59
+ ]
60
+ end
61
+ arguments
62
+ end
63
+
46
64
  def union?
47
65
  context_node.return_type.kind_of? GraphQL::UnionType
48
66
  end
@@ -98,23 +116,31 @@ module Activecube
98
116
  element
99
117
  end
100
118
 
119
+
101
120
  def converted_field_array method, values
102
- if [:desc,:asc].include?(method)
103
- values.collect{|v| KEY_FIELD_PREFIX + v}
104
- else
105
- values
106
- end
121
+ case method
122
+ when :desc,:asc
123
+ values.collect{|v| KEY_FIELD_PREFIX + v}
124
+ when :limit_by
125
+ values.merge({each: KEY_FIELD_PREFIX + values[:each]})
126
+ else
127
+ values
128
+ end
107
129
  end
108
130
 
109
131
  def apply_selector element, k, hash
110
132
  hash.each_pair do |operator, arg|
111
133
  selector = cube.selectors[k]
112
134
  raise Activecube::InputArgumentError, "#{selector} does not handle method '#{operator}' for #{element} '#{k}'" unless selector.respond_to?(operator)
113
- element = element.when( selector.send(operator, arg) ) unless arg.nil?
135
+ element = element.when( selector.send(operator, arg) ) if applicable_operator?(operator, arg)
114
136
  end
115
137
  element
116
138
  end
117
139
 
140
+ def applicable_operator? operator, arg
141
+ !arg.nil? || NULLABLE_OPERATORS.include?(operator)
142
+ end
143
+
118
144
  def apply_or_selector element, value
119
145
  selectors = value.collect{|v| make_selector v }.compact
120
146
  element.when( Activecube::Query::Selector.or(selectors) )
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.16"
3
+ VERSION = "0.1.20"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activecube-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksey Studnev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-03 00:00:00.000000000 Z
11
+ date: 2021-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activecube
@@ -114,7 +114,7 @@ homepage: https://github.com/bitquery/activecube-graphql
114
114
  licenses:
115
115
  - MIT
116
116
  metadata: {}
117
- post_install_message:
117
+ post_install_message:
118
118
  rdoc_options: []
119
119
  require_paths:
120
120
  - lib
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  requirements: []
132
132
  rubygems_version: 3.0.4
133
- signing_key:
133
+ signing_key:
134
134
  specification_version: 4
135
135
  summary: Multi-Dimensional Queries using GraphQL
136
136
  test_files: []