quo 0.5.2 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d20b292ae3178fa1ce96705049b215f37d4966a44ee9d05b4fafda3a664a9f5
4
- data.tar.gz: a151bfb1c35dcfea765d3aac5b1bf501c842288e99529523dadf410c0243fe04
3
+ metadata.gz: 78b41f6d815238ed48ed00790498c1d6d7e8c099c0312fe82a441dcbe68d667f
4
+ data.tar.gz: 84d11fe9c86ef448d17229f0544a1966f55597ce1a8522e4ef92b626fea24537
5
5
  SHA512:
6
- metadata.gz: bd0e575917052a3171dd45eada04a0ad0e0c670154294507a76808e5bc508d21d8aa53bdad3deebdea11f57a91193c1ae4132589dc330a273b3dda588f635d2f
7
- data.tar.gz: 3faaa3f25cb76d44b70c28425f42f582ed58a7b83c573d976019caef302e4bceeedb8f93912250de7e80b3a906042820eb9884049891c75f5971e3a143361006
6
+ metadata.gz: dc89984c05233e3300c62149c457bec4e079c9d2dd646011c5fa348aaee3a66e59e627fcc93051ac992bd167df536b27d51784e241996dd548dde84b25ec3bde
7
+ data.tar.gz: 1c3b41c2f541e96121b07bb3ce640846b3e308fcd018625d211b2f96a43ff4fe9cc0372d3bf8602c7fb22594c9935bb72bdd48041bde5e5eb391e6c3969a3ecc
data/Gemfile CHANGED
@@ -17,7 +17,4 @@ group :development, :test do
17
17
  gem "standard", "~> 1.3"
18
18
 
19
19
  gem "steep", "~> 1.2"
20
-
21
- gem "typed_operation", github: "stevegeek/typed_operation", branch: "main"
22
- gem "literal", github: "joeldrapper/literal", branch: "main"
23
20
  end
data/README.md CHANGED
@@ -130,38 +130,6 @@ composed = query1 + query2 # or Quo::Query.compose(query1, query2) or query1.com
130
130
  composed.first
131
131
  ```
132
132
 
133
- ```ruby
134
- class CompanyToBeApproved < Quo::TypedQuery
135
- def query
136
- Registration
137
- .left_joins(:approval)
138
- .where(approvals: {completed_at: nil})
139
- end
140
- end
141
-
142
- class CompanyInUsCityAndState < Quo::TypedQuery
143
- param :state, Literal::Union[String, Array[String]]
144
- param :city, optional(Literal::Union[String, Array[String]])
145
-
146
- def query
147
- q = Registration
148
- .joins(company: :address)
149
- .where(addresses: {state: state})
150
- q = q.where(addresses: {city: city}) if city
151
- q
152
- end
153
- end
154
-
155
-
156
- query1 = CompanyToBeApproved.new
157
- query_partialy_applied = CompanyInUsState.with(state: "California")
158
- query2 = query_partialy_applied.with(city: ["San Francisco", "Los Angeles"]).operation
159
-
160
- composed = query1 + query2
161
- # '+' composes the queries and returns a new prepared query
162
- composed.first
163
- ```
164
-
165
133
  This effectively executes:
166
134
 
167
135
  ```ruby
@@ -170,7 +138,6 @@ Registration
170
138
  .joins(company: :address)
171
139
  .where(approvals: {completed_at: nil})
172
140
  .where(addresses: {state: options[:state]})
173
- .limit(1)
174
141
  ```
175
142
 
176
143
  It is also possible to compose with an `ActiveRecord::Relation`. This can be useful in a Query object itself to help
data/lib/quo/query.rb CHANGED
@@ -148,6 +148,7 @@ module Quo
148
148
 
149
149
  # Some convenience methods for working with results
150
150
  delegate :each,
151
+ :find_each,
151
152
  :map,
152
153
  :flat_map,
153
154
  :reduce,
@@ -201,11 +202,16 @@ module Quo
201
202
  configured_query.to_sql if relation?
202
203
  end
203
204
 
204
- # Unwrap the underlying query
205
+ # Unwrap the paginated query
205
206
  def unwrap
206
207
  configured_query
207
208
  end
208
209
 
210
+ # Unwrap the un-paginated query
211
+ def unwrap_unpaginated
212
+ underlying_query
213
+ end
214
+
209
215
  delegate :distinct, to: :configured_query
210
216
 
211
217
  private
data/lib/quo/results.rb CHANGED
@@ -61,7 +61,7 @@ module Quo
61
61
  end
62
62
 
63
63
  def respond_to_missing?(name, include_private = false)
64
- Enumerable.instance_methods.include?(name)
64
+ enumerable_methods_supported.include?(name)
65
65
  end
66
66
 
67
67
  private
@@ -77,5 +77,9 @@ module Quo
77
77
  transformer.call(results)
78
78
  end
79
79
  end
80
+
81
+ def enumerable_methods_supported
82
+ [:find_each] + Enumerable.instance_methods
83
+ end
80
84
  end
81
85
  end
@@ -13,7 +13,8 @@ module Quo
13
13
  stack_to_display = stack[0..callstack_size]
14
14
  message = "\n[Query stack]: -> #{stack_to_display&.join("\n &> ")}\n"
15
15
  message += " (truncated to #{callstack_size} most recent)" if callstack_size && stack.size > callstack_size
16
- Quo.configuration.logger&.info(message)
16
+ logger = Quo.configuration.logger&.call
17
+ logger.info(message) if logger
17
18
  end
18
19
  end
19
20
  end
data/lib/quo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Quo
4
- VERSION = "0.5.2"
4
+ VERSION = "0.6.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Ierodiaconou
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-09-09 00:00:00.000000000 Z
11
+ date: 2024-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
- rubygems_version: 3.4.19
117
+ rubygems_version: 3.5.3
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Quo is a query object gem for Rails