query_methods_extend 0.0.5 → 1.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.
- checksums.yaml +4 -4
- data/README.md +1 -9
- data/lib/query_methods_extend.rb +1 -0
- data/lib/query_methods_extend/activerecord.rb +6 -5
- data/lib/query_methods_extend/association.rb +1 -1
- data/lib/query_methods_extend/like.rb +20 -18
- data/lib/query_methods_extend/operators.rb +20 -18
- data/lib/query_methods_extend/or.rb +3 -2
- data/lib/query_methods_extend/railtie.rb +9 -0
- data/lib/query_methods_extend/spec/{association.rb → association_spec.rb} +1 -0
- data/lib/query_methods_extend/spec/{operators.rb → operators_spec.rb} +0 -0
- data/lib/query_methods_extend/spec/{or.rb → or_spec.rb} +0 -0
- data/lib/query_methods_extend/spec/{union.rb → union_spec.rb} +0 -0
- data/lib/query_methods_extend/union.rb +2 -2
- data/lib/query_methods_extend/version.rb +2 -2
- data/query_methods_extend.gemspec +2 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/supports/migrate.rb +6 -4
- metadata +22 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c4039add270257fd9f5c8c1799aec94af2603eb
|
4
|
+
data.tar.gz: 7a45d215f5a8f2307e60ccbc8d7feb594f0e3ff5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 329c27fa87fc6f178f55ddb12d07fe2a5e69c11f74cd391d397ee1a0b5ce649a3041a99f55937290d4b79635bd08b3981d2e140881028a2a3eb6f9519114b660
|
7
|
+
data.tar.gz: bb9845d99f036e524aaf7037df007351ee02e63e8200927a7d2c6a3c6879ee641a7202c697e90f81f1ffefacaaa73d2c56c7b5076af73f7f883a2131958d623e
|
data/README.md
CHANGED
@@ -11,30 +11,22 @@ Add this line to your application's Gemfile:
|
|
11
11
|
gem 'query_methods_extend'
|
12
12
|
```
|
13
13
|
|
14
|
-
And model file:
|
15
|
-
```ruby
|
16
|
-
include QueryMethodsExtend
|
17
|
-
```
|
18
|
-
|
19
14
|
## Usage
|
20
15
|
|
21
16
|
The structure book models:
|
22
17
|
```ruby
|
23
18
|
class Store < ActiveRecord::Base
|
24
|
-
include QueryMethodsExtend
|
25
19
|
has_many :categories
|
26
20
|
end
|
27
21
|
// Store(id: integer, address: string)
|
28
22
|
|
29
23
|
class Category < ActiveRecord::Base
|
30
|
-
include QueryMethodsExtend
|
31
24
|
belongs_to :store
|
32
25
|
has_many :books
|
33
26
|
end
|
34
27
|
// Category(id: integer, name: string, store_id: integer)
|
35
28
|
|
36
29
|
class Book < ActiveRecord::Base
|
37
|
-
include QueryMethodsExtend
|
38
30
|
belongs_to :category
|
39
31
|
end
|
40
32
|
// Book(id: integer, name: string, price: integer, category_id: integer)
|
@@ -57,7 +49,7 @@ SELECT "categories".* FROM "categories"
|
|
57
49
|
)
|
58
50
|
```
|
59
51
|
|
60
|
-
And take **all books in the stores** in Vietnam
|
52
|
+
And take **all books in the stores** in Vietnam:
|
61
53
|
```ruby
|
62
54
|
Store.where(address: 'Vietnam').categories.books
|
63
55
|
|
data/lib/query_methods_extend.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
module ActiveRecord
|
2
2
|
module QueryMethods
|
3
3
|
include QueryMethodsExtend::Association
|
4
|
+
include QueryMethodsExtend::Like
|
5
|
+
include QueryMethodsExtend::Operators
|
6
|
+
include QueryMethodsExtend::OrQuery
|
7
|
+
include QueryMethodsExtend::Union
|
4
8
|
|
5
9
|
def method_missing(method_name, *args, &block)
|
6
|
-
|
7
|
-
super
|
8
|
-
else
|
9
|
-
check_association_exist(method_name) || super
|
10
|
-
end
|
10
|
+
check_association_exist(method_name) || super
|
11
11
|
end
|
12
|
+
|
12
13
|
end
|
13
14
|
end
|
@@ -12,7 +12,7 @@ module QueryMethodsExtend
|
|
12
12
|
|
13
13
|
association = self.try(:reflect_on_association, method_name)
|
14
14
|
result = false
|
15
|
-
if association && association.macro == :has_many
|
15
|
+
if association && association.try(:macro) == :has_many
|
16
16
|
model_reflect = association.inverse_of
|
17
17
|
model = model_reflect.active_record
|
18
18
|
query = self.select(association.primary_key_column.name)
|
@@ -3,38 +3,40 @@ module QueryMethodsExtend
|
|
3
3
|
included do
|
4
4
|
attr_accessor :extend_like_string
|
5
5
|
|
6
|
-
|
6
|
+
def self.like agrs
|
7
7
|
@extend_like_string = '%{?}%'
|
8
8
|
like_basic agrs
|
9
|
-
|
9
|
+
end
|
10
10
|
|
11
|
-
|
11
|
+
def self.l_like agrs
|
12
12
|
@extend_like_string = '%{?}'
|
13
13
|
like_basic agrs
|
14
|
-
|
14
|
+
end
|
15
15
|
|
16
|
-
|
16
|
+
def self.r_like agrs
|
17
17
|
@extend_like_string = '{?}%'
|
18
18
|
like_basic agrs
|
19
|
-
|
19
|
+
end
|
20
20
|
|
21
|
-
|
21
|
+
def self.regex_like agrs
|
22
22
|
@extend_like_string = '{?}'
|
23
23
|
like_basic agrs
|
24
|
-
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
private
|
27
|
+
def self.like_basic agrs
|
28
|
+
if agrs.class == Hash
|
29
|
+
items = self
|
30
|
+
agrs.each do |agr|
|
31
|
+
field, value = agr
|
32
|
+
items = items.where("#{self.table_name}.#{field} LIKE ?", @extend_like_string.gsub('{?}', value.to_s))
|
33
|
+
end
|
34
|
+
return items
|
35
|
+
else
|
36
|
+
raise "Like method with agruments should be a HASH"
|
32
37
|
end
|
33
|
-
return items
|
34
|
-
else
|
35
|
-
raise "Like method with agruments should be a HASH"
|
36
38
|
end
|
37
|
-
|
39
|
+
|
38
40
|
end
|
39
41
|
end
|
40
42
|
end
|
@@ -1,38 +1,40 @@
|
|
1
1
|
module QueryMethodsExtend
|
2
2
|
module Operators extend ActiveSupport::Concern
|
3
3
|
included do
|
4
|
-
|
4
|
+
def self.gt agrs
|
5
5
|
@extend_operator_string = '>'
|
6
6
|
operator_basic agrs
|
7
|
-
|
7
|
+
end
|
8
8
|
|
9
|
-
|
9
|
+
def self.gteq agrs
|
10
10
|
@extend_operator_string = '>='
|
11
11
|
operator_basic agrs
|
12
|
-
|
12
|
+
end
|
13
13
|
|
14
|
-
|
14
|
+
def self.lt agrs
|
15
15
|
@extend_operator_string = '<'
|
16
16
|
operator_basic agrs
|
17
|
-
|
17
|
+
end
|
18
18
|
|
19
|
-
|
19
|
+
def self.lteq agrs
|
20
20
|
@extend_operator_string = '<='
|
21
21
|
operator_basic agrs
|
22
|
-
|
22
|
+
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
private
|
25
|
+
def self.operator_basic agrs
|
26
|
+
if agrs.class == Hash
|
27
|
+
items = self
|
28
|
+
agrs.each do |agr|
|
29
|
+
field, value = agr
|
30
|
+
items = items.where("#{self.table_name}.#{field} #{@extend_operator_string} ?", value)
|
31
|
+
end
|
32
|
+
return items
|
33
|
+
else
|
34
|
+
raise "Operators '#{@extend_operator_string}' with agruments should be a HASH"
|
30
35
|
end
|
31
|
-
return items
|
32
|
-
else
|
33
|
-
raise "Operators '#{@extend_operator_string}' with agruments should be a HASH"
|
34
36
|
end
|
35
|
-
|
37
|
+
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
@@ -30,7 +30,7 @@ module QueryMethodsExtend
|
|
30
30
|
|
31
31
|
module OrQuery extend ActiveSupport::Concern
|
32
32
|
included do
|
33
|
-
|
33
|
+
def self.or agrs = nil
|
34
34
|
if agrs
|
35
35
|
if agrs.class == Hash
|
36
36
|
act = self.unscoped.where(agrs).where_values.map{ |data| data.to_sql }.join(' OR ')
|
@@ -41,7 +41,8 @@ module QueryMethodsExtend
|
|
41
41
|
else
|
42
42
|
all.extending(OrExtend).set_is_query_or(true)
|
43
43
|
end
|
44
|
-
|
44
|
+
end
|
45
45
|
end
|
46
46
|
end
|
47
|
+
|
47
48
|
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module QueryMethodsExtend
|
2
2
|
module Union extend ActiveSupport::Concern
|
3
3
|
included do
|
4
|
-
|
4
|
+
def self.union query
|
5
5
|
query_self = self.all.to_sql
|
6
6
|
self.unscoped.from("(#{query_self} UNION #{query.to_sql}) AS #{self.table_name}")
|
7
|
-
|
7
|
+
end
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -1,3 +1,3 @@
|
|
1
1
|
module QueryMethodsExtend
|
2
|
-
VERSION =
|
3
|
-
end
|
2
|
+
VERSION = '1.0.0'
|
3
|
+
end
|
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.
|
21
|
+
spec.add_development_dependency "activerecord", ">= 3.0"
|
22
|
+
spec.add_development_dependency 'rails', '~> 4.0'
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
24
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/spec/spec_helper.rb
CHANGED
data/spec/supports/migrate.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require "query_methods_extend"
|
2
|
-
require "query_methods_extend/
|
2
|
+
# require "query_methods_extend/railtie"
|
3
3
|
require "query_methods_extend/association"
|
4
4
|
require "query_methods_extend/like"
|
5
5
|
require "query_methods_extend/operators"
|
6
6
|
require "query_methods_extend/or"
|
7
7
|
require "query_methods_extend/union"
|
8
|
-
require
|
9
|
-
|
10
|
-
require 'models/
|
8
|
+
require "query_methods_extend/activerecord"
|
9
|
+
|
10
|
+
require 'models/book'
|
11
|
+
require 'models/category'
|
12
|
+
require 'models/store'
|
11
13
|
|
12
14
|
def run_migrate
|
13
15
|
ActiveRecord::Base.establish_connection(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query_methods_extend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alicuche
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -17,13 +17,27 @@ dependencies:
|
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.0'
|
20
|
-
type: :
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,11 +113,12 @@ files:
|
|
99
113
|
- lib/query_methods_extend/like.rb
|
100
114
|
- lib/query_methods_extend/operators.rb
|
101
115
|
- lib/query_methods_extend/or.rb
|
102
|
-
- lib/query_methods_extend/
|
116
|
+
- lib/query_methods_extend/railtie.rb
|
117
|
+
- lib/query_methods_extend/spec/association_spec.rb
|
103
118
|
- lib/query_methods_extend/spec/like_spec.rb
|
104
|
-
- lib/query_methods_extend/spec/
|
105
|
-
- lib/query_methods_extend/spec/
|
106
|
-
- lib/query_methods_extend/spec/
|
119
|
+
- lib/query_methods_extend/spec/operators_spec.rb
|
120
|
+
- lib/query_methods_extend/spec/or_spec.rb
|
121
|
+
- lib/query_methods_extend/spec/union_spec.rb
|
107
122
|
- lib/query_methods_extend/union.rb
|
108
123
|
- lib/query_methods_extend/version.rb
|
109
124
|
- query_methods_extend.gemspec
|