quo 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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