inquery 1.0.11 → 1.1.0
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 +4 -4
- data/.github/workflows/rubocop.yml +1 -1
- data/.github/workflows/ruby.yml +24 -8
- data/.gitignore +2 -2
- data/.rubocop.yml +4 -0
- data/Appraisals +24 -4
- data/CHANGELOG.md +38 -0
- data/Gemfile +17 -1
- data/Gemfile.lock +125 -0
- data/LICENSE +1 -1
- data/MIGRATION.md +260 -0
- data/README.md +14 -8
- data/RUBY_VERSION +1 -1
- data/Rakefile +4 -11
- data/VERSION +1 -1
- data/doc/Inquery/Exceptions/Base.html +4 -4
- data/doc/Inquery/Exceptions/InvalidRelation.html +4 -4
- data/doc/Inquery/Exceptions/UnknownCallSignature.html +4 -4
- data/doc/Inquery/Exceptions.html +4 -4
- data/doc/Inquery/MethodAccessibleHash.html +431 -0
- data/doc/Inquery/Mixins/RawSqlUtils.html +17 -4
- data/doc/Inquery/Mixins/RelationValidation/ClassMethods.html +8 -7
- data/doc/Inquery/Mixins/RelationValidation.html +9 -8
- data/doc/Inquery/Mixins/SchemaValidation/ClassMethods.html +4 -4
- data/doc/Inquery/Mixins/SchemaValidation.html +4 -4
- data/doc/Inquery/Mixins.html +4 -4
- data/doc/Inquery/Query/Chainable.html +207 -90
- data/doc/Inquery/Query.html +401 -73
- data/doc/Inquery.html +12 -9
- data/doc/_index.html +12 -5
- data/doc/class_list.html +6 -3
- data/doc/css/full_list.css +3 -3
- data/doc/css/style.css +6 -0
- data/doc/file.README.html +102 -16
- data/doc/file_list.html +5 -2
- data/doc/frames.html +10 -5
- data/doc/index.html +102 -16
- data/doc/js/app.js +294 -264
- data/doc/js/full_list.js +30 -4
- data/doc/method_list.html +48 -21
- data/doc/top-level-namespace.html +4 -4
- data/gemfiles/rails_5.2.gemfile +1 -0
- data/gemfiles/rails_6.0.gemfile +1 -0
- data/gemfiles/rails_6.1.gemfile +1 -0
- data/gemfiles/rails_7.0.gemfile +1 -0
- data/gemfiles/{rails_5.1.gemfile → rails_7.1.gemfile} +2 -1
- data/gemfiles/rails_7.2.gemfile +8 -0
- data/gemfiles/rails_8.0.gemfile +8 -0
- data/gemfiles/rails_8.1.gemfile +8 -0
- data/inquery.gemspec +11 -34
- data/lib/inquery/method_accessible_hash.rb +45 -0
- data/lib/inquery/mixins/raw_sql_utils.rb +32 -6
- data/lib/inquery/mixins/relation_validation.rb +1 -1
- data/lib/inquery/query/chainable.rb +69 -27
- data/lib/inquery/query.rb +67 -14
- data/lib/inquery.rb +2 -0
- data/test/inquery/error_handling_test.rb +117 -0
- data/test/inquery/method_accessible_hash_test.rb +85 -0
- data/test/inquery/mixins/raw_sql_utils_test.rb +67 -0
- data/test/inquery/query/chainable_test.rb +78 -0
- data/test/inquery/query_test.rb +86 -0
- data/test/test_helper.rb +11 -0
- metadata +30 -129
- data/.yardopts +0 -1
data/test/inquery/query_test.rb
CHANGED
|
@@ -43,5 +43,91 @@ module Inquery
|
|
|
43
43
|
result = Queries::Group::FetchAsJson.run
|
|
44
44
|
assert_equal Group.all.to_json, result
|
|
45
45
|
end
|
|
46
|
+
|
|
47
|
+
def test_query_with_optional_params
|
|
48
|
+
query_class = Class.new(Inquery::Query) do
|
|
49
|
+
schema3 do
|
|
50
|
+
str! :name
|
|
51
|
+
int? :age
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def call
|
|
55
|
+
User.where(name: osparams.name)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# With both params
|
|
60
|
+
result = query_class.run(name: 'Alice', age: 30)
|
|
61
|
+
assert_kind_of ActiveRecord::Relation, result
|
|
62
|
+
|
|
63
|
+
# With only required param
|
|
64
|
+
result = query_class.run(name: 'Alice')
|
|
65
|
+
assert_kind_of ActiveRecord::Relation, result
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_query_without_schema
|
|
69
|
+
query_class = Class.new(Inquery::Query) do
|
|
70
|
+
def call
|
|
71
|
+
User.all
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
result = query_class.run
|
|
76
|
+
assert_equal User.all, result
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_query_with_empty_result
|
|
80
|
+
query_class = Class.new(Inquery::Query) do
|
|
81
|
+
def call
|
|
82
|
+
User.where('1=0')
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
result = query_class.run
|
|
87
|
+
assert_empty result.to_a
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_query_returns_nil
|
|
91
|
+
query_class = Class.new(Inquery::Query) do
|
|
92
|
+
def call
|
|
93
|
+
nil
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
result = query_class.run
|
|
98
|
+
assert_nil result
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_query_with_process_method
|
|
102
|
+
query_class = Class.new(Inquery::Query) do
|
|
103
|
+
def call
|
|
104
|
+
User.all
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def process(results)
|
|
108
|
+
results.count
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
result = query_class.run
|
|
113
|
+
assert_equal 3, result
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def test_osparams_returns_method_accessible_hash
|
|
117
|
+
query_class = Class.new(Inquery::Query) do
|
|
118
|
+
schema3 do
|
|
119
|
+
str! :name
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def call
|
|
123
|
+
osparams
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
result = query_class.run(name: 'Alice')
|
|
128
|
+
assert_kind_of Inquery::MethodAccessibleHash, result
|
|
129
|
+
assert_equal 'Alice', result.name
|
|
130
|
+
assert_equal 'Alice', result[:name]
|
|
131
|
+
end
|
|
46
132
|
end
|
|
47
133
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'simplecov'
|
|
3
|
+
SimpleCov.start do
|
|
4
|
+
add_filter '/test/'
|
|
5
|
+
add_filter '/vendor/'
|
|
6
|
+
end
|
|
7
|
+
rescue LoadError
|
|
8
|
+
# SimpleCov not available, skip coverage reporting
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
require 'logger'
|
|
1
12
|
require 'active_record'
|
|
2
13
|
require 'minitest/autorun'
|
|
3
14
|
require 'inquery'
|
metadata
CHANGED
|
@@ -1,171 +1,62 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inquery
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sitrox
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2026-01-05 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: appraisal
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rake
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: sqlite3
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: haml
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: yard
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rubocop
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - '='
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.25'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - '='
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '1.25'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: redcarpet
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - ">="
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - ">="
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: minitest
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - ">="
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0'
|
|
118
|
-
type: :runtime
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - ">="
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0'
|
|
125
12
|
- !ruby/object:Gem::Dependency
|
|
126
13
|
name: activesupport
|
|
127
14
|
requirement: !ruby/object:Gem::Requirement
|
|
128
15
|
requirements:
|
|
129
16
|
- - ">="
|
|
130
17
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
18
|
+
version: '5.1'
|
|
132
19
|
type: :runtime
|
|
133
20
|
prerelease: false
|
|
134
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
22
|
requirements:
|
|
136
23
|
- - ">="
|
|
137
24
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
25
|
+
version: '5.1'
|
|
139
26
|
- !ruby/object:Gem::Dependency
|
|
140
27
|
name: activerecord
|
|
141
28
|
requirement: !ruby/object:Gem::Requirement
|
|
142
29
|
requirements:
|
|
143
30
|
- - ">="
|
|
144
31
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
32
|
+
version: '5.1'
|
|
146
33
|
type: :runtime
|
|
147
34
|
prerelease: false
|
|
148
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
36
|
requirements:
|
|
150
37
|
- - ">="
|
|
151
38
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '
|
|
39
|
+
version: '5.1'
|
|
153
40
|
- !ruby/object:Gem::Dependency
|
|
154
41
|
name: schemacop
|
|
155
42
|
requirement: !ruby/object:Gem::Requirement
|
|
156
43
|
requirements:
|
|
157
|
-
- - "
|
|
44
|
+
- - ">="
|
|
158
45
|
- !ruby/object:Gem::Version
|
|
159
46
|
version: 3.0.8
|
|
47
|
+
- - "<"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '4.0'
|
|
160
50
|
type: :runtime
|
|
161
51
|
prerelease: false
|
|
162
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
53
|
requirements:
|
|
164
|
-
- - "
|
|
54
|
+
- - ">="
|
|
165
55
|
- !ruby/object:Gem::Version
|
|
166
56
|
version: 3.0.8
|
|
167
|
-
|
|
168
|
-
|
|
57
|
+
- - "<"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '4.0'
|
|
169
60
|
executables: []
|
|
170
61
|
extensions: []
|
|
171
62
|
extra_rdoc_files: []
|
|
@@ -175,11 +66,12 @@ files:
|
|
|
175
66
|
- ".gitignore"
|
|
176
67
|
- ".releaser_config"
|
|
177
68
|
- ".rubocop.yml"
|
|
178
|
-
- ".yardopts"
|
|
179
69
|
- Appraisals
|
|
180
70
|
- CHANGELOG.md
|
|
181
71
|
- Gemfile
|
|
72
|
+
- Gemfile.lock
|
|
182
73
|
- LICENSE
|
|
74
|
+
- MIGRATION.md
|
|
183
75
|
- README.md
|
|
184
76
|
- RUBY_VERSION
|
|
185
77
|
- Rakefile
|
|
@@ -189,6 +81,7 @@ files:
|
|
|
189
81
|
- doc/Inquery/Exceptions/Base.html
|
|
190
82
|
- doc/Inquery/Exceptions/InvalidRelation.html
|
|
191
83
|
- doc/Inquery/Exceptions/UnknownCallSignature.html
|
|
84
|
+
- doc/Inquery/MethodAccessibleHash.html
|
|
192
85
|
- doc/Inquery/Mixins.html
|
|
193
86
|
- doc/Inquery/Mixins/RawSqlUtils.html
|
|
194
87
|
- doc/Inquery/Mixins/RelationValidation.html
|
|
@@ -211,14 +104,18 @@ files:
|
|
|
211
104
|
- doc/js/jquery.js
|
|
212
105
|
- doc/method_list.html
|
|
213
106
|
- doc/top-level-namespace.html
|
|
214
|
-
- gemfiles/rails_5.1.gemfile
|
|
215
107
|
- gemfiles/rails_5.2.gemfile
|
|
216
108
|
- gemfiles/rails_6.0.gemfile
|
|
217
109
|
- gemfiles/rails_6.1.gemfile
|
|
218
110
|
- gemfiles/rails_7.0.gemfile
|
|
111
|
+
- gemfiles/rails_7.1.gemfile
|
|
112
|
+
- gemfiles/rails_7.2.gemfile
|
|
113
|
+
- gemfiles/rails_8.0.gemfile
|
|
114
|
+
- gemfiles/rails_8.1.gemfile
|
|
219
115
|
- inquery.gemspec
|
|
220
116
|
- lib/inquery.rb
|
|
221
117
|
- lib/inquery/exceptions.rb
|
|
118
|
+
- lib/inquery/method_accessible_hash.rb
|
|
222
119
|
- lib/inquery/mixins/raw_sql_utils.rb
|
|
223
120
|
- lib/inquery/mixins/relation_validation.rb
|
|
224
121
|
- lib/inquery/mixins/schema_validation.rb
|
|
@@ -226,6 +123,9 @@ files:
|
|
|
226
123
|
- lib/inquery/query/chainable.rb
|
|
227
124
|
- test/db/models.rb
|
|
228
125
|
- test/db/schema.rb
|
|
126
|
+
- test/inquery/error_handling_test.rb
|
|
127
|
+
- test/inquery/method_accessible_hash_test.rb
|
|
128
|
+
- test/inquery/mixins/raw_sql_utils_test.rb
|
|
229
129
|
- test/inquery/query/chainable_test.rb
|
|
230
130
|
- test/inquery/query_test.rb
|
|
231
131
|
- test/queries/group/fetch_as_json.rb
|
|
@@ -236,10 +136,9 @@ files:
|
|
|
236
136
|
- test/queries/user/fetch_in_group.rb
|
|
237
137
|
- test/queries/user/fetch_in_group_rel.rb
|
|
238
138
|
- test/test_helper.rb
|
|
239
|
-
homepage:
|
|
139
|
+
homepage: https://github.com/sitrox/inquery
|
|
240
140
|
licenses: []
|
|
241
141
|
metadata: {}
|
|
242
|
-
post_install_message:
|
|
243
142
|
rdoc_options: []
|
|
244
143
|
require_paths:
|
|
245
144
|
- lib
|
|
@@ -254,13 +153,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
254
153
|
- !ruby/object:Gem::Version
|
|
255
154
|
version: '0'
|
|
256
155
|
requirements: []
|
|
257
|
-
rubygems_version:
|
|
258
|
-
signing_key:
|
|
156
|
+
rubygems_version: 4.0.2
|
|
259
157
|
specification_version: 4
|
|
260
158
|
summary: A skeleton that allows extracting queries into atomic, reusable classes.
|
|
261
159
|
test_files:
|
|
262
160
|
- test/db/models.rb
|
|
263
161
|
- test/db/schema.rb
|
|
162
|
+
- test/inquery/error_handling_test.rb
|
|
163
|
+
- test/inquery/method_accessible_hash_test.rb
|
|
164
|
+
- test/inquery/mixins/raw_sql_utils_test.rb
|
|
264
165
|
- test/inquery/query/chainable_test.rb
|
|
265
166
|
- test/inquery/query_test.rb
|
|
266
167
|
- test/queries/group/fetch_as_json.rb
|
data/.yardopts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
--markup=markdown --readme=README.md --no-private lib/**/*.rb
|