arqo 0.1.0 → 0.2.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/LICENSE.txt +1 -1
- data/README.md +18 -2
- data/lib/arqo/query.rb +33 -6
- data/lib/arqo/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ba2c84fa910379b38e591ab84f766e057c76de6
|
4
|
+
data.tar.gz: b6e2b10c631038d4c766683b1159aebbe44325f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faa30d5cabb73243dc846d2f71eca8d521b0b3073467039df5350a7e4730096904320c935b1a727ac4f04a1f11b024004756b27dda8da993b5971f60fed271dd
|
7
|
+
data.tar.gz: d7199ec586500009c448606a63454cc29e9c68e121dfd19874b54a5fc7918ec5af737c1b521f76f03d3173c5a09768ab74a09854ad401d513c1f803877836f78
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -96,6 +96,22 @@ you can use it like this:
|
|
96
96
|
CustomNamedQuery.new(User.all).active_last_week
|
97
97
|
```
|
98
98
|
|
99
|
+
you can also set the model class or relation to query from by overriding a simple method, like:
|
100
|
+
|
101
|
+
```ruby
|
102
|
+
class CustomNamedQuery < ARQO::Query
|
103
|
+
module Scope
|
104
|
+
# ...
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def associated_relation
|
110
|
+
User # you can also do something like User.some_scope
|
111
|
+
end
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
99
115
|
## Chaining scopes
|
100
116
|
Of course you can chain everything together, methods defined in the query object and scopes defined in the model or by Rails.
|
101
117
|
```ruby
|
@@ -127,7 +143,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
127
143
|
|
128
144
|
## Contributing
|
129
145
|
|
130
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
146
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/rootstrap/arqo. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/rootstrap/arqo/blob/master/CODE_OF_CONDUCT.md).
|
131
147
|
|
132
148
|
|
133
149
|
## License
|
@@ -136,7 +152,7 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
136
152
|
|
137
153
|
## Code of Conduct
|
138
154
|
|
139
|
-
Everyone interacting in the ARQO project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
155
|
+
Everyone interacting in the ARQO project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/rootstrap/arqo/blob/master/CODE_OF_CONDUCT.md).
|
140
156
|
|
141
157
|
## Logo attribution
|
142
158
|
Logo made by [iconixar](https://www.flaticon.com/free-icon/archery_3080892) from [www.flaticon.com](https://www.flaticon.com/)
|
data/lib/arqo/query.rb
CHANGED
@@ -6,18 +6,45 @@ module ARQO
|
|
6
6
|
attr_reader :relation
|
7
7
|
delegate_missing_to :relation
|
8
8
|
|
9
|
-
def initialize(relation =
|
9
|
+
def initialize(relation = associated_relation)
|
10
10
|
@relation = relation.extending(scope_module)
|
11
11
|
end
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
# Returns the model to which the query object is associated.
|
16
|
+
# By default it will infer the name from the query object's class
|
17
|
+
# assuming the name is the name of the model with "Query" as the suffix.
|
18
|
+
#
|
19
|
+
# As an example, UserQuery would be associated with the User model and
|
20
|
+
# Blog::PostQuery would be associated with the Blog::Post namespaced model.
|
21
|
+
#
|
22
|
+
# This method can be overridden to bypass this convention and associate
|
23
|
+
# the query object to another relation by returning it.
|
24
|
+
#
|
25
|
+
# ==== Example
|
26
|
+
# class PostQuery < ARQO::Query
|
27
|
+
# # ...
|
28
|
+
#
|
29
|
+
# private
|
30
|
+
#
|
31
|
+
# def associated_relation
|
32
|
+
# Blog::Post
|
33
|
+
# end
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
# @return [Class, ActiveRecord::Relation]
|
37
|
+
def associated_relation
|
38
|
+
class_name = self.class.name
|
39
|
+
derived_relation_name = class_name.sub(/Query$/, '')
|
40
|
+
|
41
|
+
unless Object.const_defined?(derived_relation_name)
|
42
|
+
raise NameError, "Could not find model #{derived_relation_name} associated " \
|
43
|
+
"to query #{class_name}.\n Make sure the name is correct or override " \
|
44
|
+
'#associated_relation to provide a custom model'
|
45
|
+
end
|
18
46
|
|
19
|
-
|
20
|
-
derived_relation_name.constantize.all if Object.const_defined?(derived_relation_name)
|
47
|
+
derived_relation_name.constantize.all
|
21
48
|
end
|
22
49
|
|
23
50
|
def scope_module
|
data/lib/arqo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arqo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Santiago Bartesaghi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -130,7 +130,7 @@ dependencies:
|
|
130
130
|
version: 1.4.2
|
131
131
|
description:
|
132
132
|
email:
|
133
|
-
-
|
133
|
+
- santib@hey.com
|
134
134
|
executables: []
|
135
135
|
extensions: []
|
136
136
|
extra_rdoc_files: []
|
@@ -140,12 +140,12 @@ files:
|
|
140
140
|
- lib/arqo.rb
|
141
141
|
- lib/arqo/query.rb
|
142
142
|
- lib/arqo/version.rb
|
143
|
-
homepage: https://github.com/
|
143
|
+
homepage: https://github.com/rootstrap/arqo
|
144
144
|
licenses:
|
145
145
|
- MIT
|
146
146
|
metadata:
|
147
|
-
homepage_uri: https://github.com/
|
148
|
-
source_code_uri: https://github.com/
|
147
|
+
homepage_uri: https://github.com/rootstrap/arqo
|
148
|
+
source_code_uri: https://github.com/rootstrap/arqo
|
149
149
|
post_install_message:
|
150
150
|
rdoc_options: []
|
151
151
|
require_paths:
|