quo 1.0.0.beta2 → 2.0.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.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +17 -0
  3. data/.devcontainer/compose.yml +10 -0
  4. data/.devcontainer/devcontainer.json +12 -0
  5. data/Appraisals +4 -12
  6. data/CHANGELOG.md +112 -1
  7. data/CLAUDE.md +19 -0
  8. data/Gemfile +7 -1
  9. data/LICENSE.txt +1 -1
  10. data/README.md +496 -203
  11. data/Rakefile +66 -6
  12. data/UPGRADING.md +216 -0
  13. data/badges/coverage_badge_total.svg +35 -0
  14. data/badges/rubycritic_badge_score.svg +35 -0
  15. data/claude-skill/README.md +100 -0
  16. data/claude-skill/SKILL.md +442 -0
  17. data/claude-skill/references/API_REFERENCE.md +462 -0
  18. data/claude-skill/references/COMPOSITION.md +396 -0
  19. data/claude-skill/references/PAGINATION.md +396 -0
  20. data/claude-skill/references/QUERY_TYPES.md +297 -0
  21. data/claude-skill/references/TRANSFORMERS.md +282 -0
  22. data/context/01-core-architecture.md +247 -0
  23. data/context/02-query-types-implementation.md +355 -0
  24. data/context/03-composition-transformation.md +441 -0
  25. data/context/04-pagination-results.md +485 -0
  26. data/context/05-testing-configuration.md +491 -0
  27. data/context/06-advanced-patterns-examples.md +153 -0
  28. data/gemfiles/rails_8.0.gemfile +10 -5
  29. data/gemfiles/rails_8.1.gemfile +20 -0
  30. data/lib/generators/quo/install/USAGE +21 -0
  31. data/lib/generators/quo/install/install_generator.rb +63 -0
  32. data/lib/quo/collection_backed_query.rb +21 -15
  33. data/lib/quo/collection_results.rb +1 -0
  34. data/lib/quo/composed_collection_backed_query.rb +42 -0
  35. data/lib/quo/composed_instance.rb +144 -0
  36. data/lib/quo/composed_query.rb +43 -178
  37. data/lib/quo/composed_relation_backed_query.rb +42 -0
  38. data/lib/quo/composing/base_strategy.rb +22 -0
  39. data/lib/quo/composing/class_strategy.rb +86 -0
  40. data/lib/quo/composing/class_strategy_registry.rb +31 -0
  41. data/lib/quo/composing/query_classes_strategy.rb +38 -0
  42. data/lib/quo/composing.rb +81 -0
  43. data/lib/quo/engine.rb +1 -0
  44. data/lib/quo/minitest/helpers.rb +14 -24
  45. data/lib/quo/preloadable.rb +1 -0
  46. data/lib/quo/query.rb +22 -5
  47. data/lib/quo/relation_backed_query.rb +24 -18
  48. data/lib/quo/relation_backed_query_specification.rb +44 -25
  49. data/lib/quo/relation_results.rb +1 -0
  50. data/lib/quo/results.rb +31 -2
  51. data/lib/quo/rspec/helpers.rb +15 -26
  52. data/lib/quo/testing/collection_backed_fake.rb +1 -0
  53. data/lib/quo/testing/fake_helpers.rb +30 -0
  54. data/lib/quo/testing/relation_backed_fake.rb +1 -0
  55. data/lib/quo/version.rb +1 -1
  56. data/lib/quo/wrapped_collection_backed_query.rb +21 -0
  57. data/lib/quo/wrapped_relation_backed_query.rb +21 -0
  58. data/lib/quo.rb +8 -0
  59. data/quo.png +0 -0
  60. data/sig/generated/quo/collection_backed_query.rbs +10 -4
  61. data/sig/generated/quo/collection_results.rbs +1 -0
  62. data/sig/generated/quo/composed_collection_backed_query.rbs +25 -0
  63. data/sig/generated/quo/composed_instance.rbs +61 -0
  64. data/sig/generated/quo/composed_query.rbs +23 -56
  65. data/sig/generated/quo/composed_relation_backed_query.rbs +25 -0
  66. data/sig/generated/quo/composing/base_strategy.rbs +16 -0
  67. data/sig/generated/quo/composing/class_strategy.rbs +38 -0
  68. data/sig/generated/quo/composing/class_strategy_registry.rbs +16 -0
  69. data/sig/generated/quo/composing/query_classes_strategy.rbs +24 -0
  70. data/sig/generated/quo/composing.rbs +40 -0
  71. data/sig/generated/quo/engine.rbs +1 -0
  72. data/sig/generated/quo/minitest/helpers.rbs +12 -0
  73. data/sig/generated/quo/preloadable.rbs +1 -0
  74. data/sig/generated/quo/query.rbs +15 -4
  75. data/sig/generated/quo/relation_backed_query.rbs +15 -5
  76. data/sig/generated/quo/relation_backed_query_specification.rbs +47 -39
  77. data/sig/generated/quo/relation_results.rbs +1 -0
  78. data/sig/generated/quo/results.rbs +11 -0
  79. data/sig/generated/quo/rspec/helpers.rbs +12 -0
  80. data/sig/generated/quo/testing/collection_backed_fake.rbs +1 -0
  81. data/sig/generated/quo/testing/fake_helpers.rbs +14 -0
  82. data/sig/generated/quo/testing/relation_backed_fake.rbs +1 -0
  83. data/sig/generated/quo/wrapped_collection_backed_query.rbs +13 -0
  84. data/sig/generated/quo/wrapped_relation_backed_query.rbs +13 -0
  85. data/sig/generated/quo.rbs +1 -0
  86. data/website/.gitignore +6 -0
  87. data/website/.nojekyll +0 -0
  88. data/website/404.html +26 -0
  89. data/website/Gemfile +24 -0
  90. data/website/_config.yml +50 -0
  91. data/website/_data/navigation.yml +8 -0
  92. data/website/_data/sidebar.yml +2 -0
  93. data/website/_data/social_links.yml +3 -0
  94. data/website/_docs/api.md +261 -0
  95. data/website/_docs/get-started.md +289 -0
  96. data/website/assets/quo.png +0 -0
  97. data/website/index.md +141 -0
  98. metadata +70 -13
  99. data/gemfiles/rails_7.0.gemfile +0 -15
  100. data/gemfiles/rails_7.1.gemfile +0 -15
  101. data/gemfiles/rails_7.2.gemfile +0 -15
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Ierodiaconou
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-03-31 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activerecord
@@ -15,7 +15,7 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '7'
18
+ version: '8.0'
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '9'
@@ -25,7 +25,7 @@ dependencies:
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '7'
28
+ version: '8.0'
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
31
  version: '9'
@@ -35,7 +35,7 @@ dependencies:
35
35
  requirements:
36
36
  - - ">="
37
37
  - !ruby/object:Gem::Version
38
- version: '7'
38
+ version: '8.0'
39
39
  - - "<"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '9'
@@ -45,7 +45,7 @@ dependencies:
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '7'
48
+ version: '8.0'
49
49
  - - "<"
50
50
  - !ruby/object:Gem::Version
51
51
  version: '9'
@@ -55,7 +55,7 @@ dependencies:
55
55
  requirements:
56
56
  - - ">="
57
57
  - !ruby/object:Gem::Version
58
- version: 1.6.0
58
+ version: '1.9'
59
59
  - - "<"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2'
@@ -65,7 +65,7 @@ dependencies:
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.6.0
68
+ version: '1.9'
69
69
  - - "<"
70
70
  - !ruby/object:Gem::Version
71
71
  version: '2'
@@ -90,22 +90,50 @@ executables: []
90
90
  extensions: []
91
91
  extra_rdoc_files: []
92
92
  files:
93
+ - ".devcontainer/Dockerfile"
94
+ - ".devcontainer/compose.yml"
95
+ - ".devcontainer/devcontainer.json"
93
96
  - ".standard.yml"
94
97
  - Appraisals
95
98
  - CHANGELOG.md
99
+ - CLAUDE.md
96
100
  - Gemfile
97
101
  - LICENSE.txt
98
102
  - README.md
99
103
  - Rakefile
100
104
  - Steepfile
101
- - gemfiles/rails_7.0.gemfile
102
- - gemfiles/rails_7.1.gemfile
103
- - gemfiles/rails_7.2.gemfile
105
+ - UPGRADING.md
106
+ - badges/coverage_badge_total.svg
107
+ - badges/rubycritic_badge_score.svg
108
+ - claude-skill/README.md
109
+ - claude-skill/SKILL.md
110
+ - claude-skill/references/API_REFERENCE.md
111
+ - claude-skill/references/COMPOSITION.md
112
+ - claude-skill/references/PAGINATION.md
113
+ - claude-skill/references/QUERY_TYPES.md
114
+ - claude-skill/references/TRANSFORMERS.md
115
+ - context/01-core-architecture.md
116
+ - context/02-query-types-implementation.md
117
+ - context/03-composition-transformation.md
118
+ - context/04-pagination-results.md
119
+ - context/05-testing-configuration.md
120
+ - context/06-advanced-patterns-examples.md
104
121
  - gemfiles/rails_8.0.gemfile
122
+ - gemfiles/rails_8.1.gemfile
123
+ - lib/generators/quo/install/USAGE
124
+ - lib/generators/quo/install/install_generator.rb
105
125
  - lib/quo.rb
106
126
  - lib/quo/collection_backed_query.rb
107
127
  - lib/quo/collection_results.rb
128
+ - lib/quo/composed_collection_backed_query.rb
129
+ - lib/quo/composed_instance.rb
108
130
  - lib/quo/composed_query.rb
131
+ - lib/quo/composed_relation_backed_query.rb
132
+ - lib/quo/composing.rb
133
+ - lib/quo/composing/base_strategy.rb
134
+ - lib/quo/composing/class_strategy.rb
135
+ - lib/quo/composing/class_strategy_registry.rb
136
+ - lib/quo/composing/query_classes_strategy.rb
109
137
  - lib/quo/engine.rb
110
138
  - lib/quo/minitest/helpers.rb
111
139
  - lib/quo/preloadable.rb
@@ -116,25 +144,54 @@ files:
116
144
  - lib/quo/results.rb
117
145
  - lib/quo/rspec/helpers.rb
118
146
  - lib/quo/testing/collection_backed_fake.rb
147
+ - lib/quo/testing/fake_helpers.rb
119
148
  - lib/quo/testing/relation_backed_fake.rb
120
149
  - lib/quo/version.rb
150
+ - lib/quo/wrapped_collection_backed_query.rb
151
+ - lib/quo/wrapped_relation_backed_query.rb
121
152
  - lib/tasks/quo.rake
153
+ - quo.png
122
154
  - rbs_collection.yaml
123
155
  - sig/generated/quo.rbs
124
156
  - sig/generated/quo/collection_backed_query.rbs
125
157
  - sig/generated/quo/collection_results.rbs
158
+ - sig/generated/quo/composed_collection_backed_query.rbs
159
+ - sig/generated/quo/composed_instance.rbs
126
160
  - sig/generated/quo/composed_query.rbs
161
+ - sig/generated/quo/composed_relation_backed_query.rbs
162
+ - sig/generated/quo/composing.rbs
163
+ - sig/generated/quo/composing/base_strategy.rbs
164
+ - sig/generated/quo/composing/class_strategy.rbs
165
+ - sig/generated/quo/composing/class_strategy_registry.rbs
166
+ - sig/generated/quo/composing/query_classes_strategy.rbs
127
167
  - sig/generated/quo/engine.rbs
168
+ - sig/generated/quo/minitest/helpers.rbs
128
169
  - sig/generated/quo/preloadable.rbs
129
170
  - sig/generated/quo/query.rbs
130
171
  - sig/generated/quo/relation_backed_query.rbs
131
172
  - sig/generated/quo/relation_backed_query_specification.rbs
132
173
  - sig/generated/quo/relation_results.rbs
133
174
  - sig/generated/quo/results.rbs
175
+ - sig/generated/quo/rspec/helpers.rbs
134
176
  - sig/generated/quo/testing/collection_backed_fake.rbs
177
+ - sig/generated/quo/testing/fake_helpers.rbs
135
178
  - sig/generated/quo/testing/relation_backed_fake.rbs
136
179
  - sig/generated/quo/version.rbs
180
+ - sig/generated/quo/wrapped_collection_backed_query.rbs
181
+ - sig/generated/quo/wrapped_relation_backed_query.rbs
137
182
  - sig/literal.rbs
183
+ - website/.gitignore
184
+ - website/.nojekyll
185
+ - website/404.html
186
+ - website/Gemfile
187
+ - website/_config.yml
188
+ - website/_data/navigation.yml
189
+ - website/_data/sidebar.yml
190
+ - website/_data/social_links.yml
191
+ - website/_docs/api.md
192
+ - website/_docs/get-started.md
193
+ - website/assets/quo.png
194
+ - website/index.md
138
195
  homepage: https://github.com/stevegeek/quo
139
196
  licenses:
140
197
  - MIT
@@ -148,14 +205,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
148
205
  requirements:
149
206
  - - ">="
150
207
  - !ruby/object:Gem::Version
151
- version: 3.1.0
208
+ version: 3.2.0
152
209
  required_rubygems_version: !ruby/object:Gem::Requirement
153
210
  requirements:
154
211
  - - ">="
155
212
  - !ruby/object:Gem::Version
156
213
  version: '0'
157
214
  requirements: []
158
- rubygems_version: 3.6.2
215
+ rubygems_version: 3.6.9
159
216
  specification_version: 4
160
217
  summary: Quo is a query object gem for Rails
161
218
  test_files: []
@@ -1,15 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 7.0"
6
-
7
- group :development, :test do
8
- gem "sqlite3"
9
- gem "rake", "~> 13.0"
10
- gem "minitest", "~> 5.0"
11
- gem "standard"
12
- gem "steep"
13
- end
14
-
15
- gemspec path: "../"
@@ -1,15 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 7.1"
6
-
7
- group :development, :test do
8
- gem "sqlite3"
9
- gem "rake", "~> 13.0"
10
- gem "minitest", "~> 5.0"
11
- gem "standard"
12
- gem "steep"
13
- end
14
-
15
- gemspec path: "../"
@@ -1,15 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 7.2"
6
-
7
- group :development, :test do
8
- gem "sqlite3"
9
- gem "rake", "~> 13.0"
10
- gem "minitest", "~> 5.0"
11
- gem "standard"
12
- gem "steep"
13
- end
14
-
15
- gemspec path: "../"