querifier 0.1.1 → 0.2.2

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
  SHA1:
3
- metadata.gz: 3d9ece5eebe56e40fa8fffa8684dc2f41ee28a52
4
- data.tar.gz: 13a382c786e6d0c2a90512d58412549d5d099242
3
+ metadata.gz: '0384ae9c72a559364bfcc1ff5a8727e23e333083'
4
+ data.tar.gz: 92eb1c2528a31373da3bbce219299fe9b5bc6542
5
5
  SHA512:
6
- metadata.gz: 0cd9c66e1f9f552a2f632a6cb0286b0da4ad68a4a2c4c89cb0ba60195346e6c5aa939d6d8ce3bc7acd6a5b38ab0a656da9b231a60c091cf94f75982600762688
7
- data.tar.gz: '0077599ee23261b4930473d42bb9ea9e1eaca1ae20168c3304e753e84413ff35e1e712d677086e65c6affc964877056acf232b663f58b1e274c522609424f1b2'
6
+ metadata.gz: fa625d8291d0fafb3c89f8b8926cdfdf4367c392efb76bc5cb9778407b082928ad9d7bb0672dda1b5a27b19cb4d491e38498185706154937652b39fee2572ff2
7
+ data.tar.gz: 9b882bc922be3d74f548b425e2b66db08354f7a398cbde06e11d5fd9fb3118de458d25ad87ee21dfddfa551b323d859dc3833645fa2833b7799dca5f07c0c286
data/README.md CHANGED
@@ -69,6 +69,39 @@ class BookController < ApiController
69
69
  end
70
70
  ```
71
71
 
72
+ ## Custom model class
73
+
74
+ Querifier will try to assume the class for your model removing the `Query` from your query classname, some examples are:
75
+ - BookQuery => Book
76
+ - BooksQuery => Books
77
+ - SomeModule::BookQuery => Book
78
+
79
+ If your model isn't called like your query, you can configure it with the entity_class method, something like:
80
+
81
+ ```ruby
82
+ class BookQuery
83
+ include Querifier::Queries::Default
84
+
85
+ # If no order param is provided, then this order will be used
86
+ # default_sort { id: :asc }
87
+ # Configure these constants to add attributes to the ordering a filtering
88
+ where_attributes :id, :author_name # Configure your attributes here
89
+ order_attributes :id # Configure your attributes here
90
+
91
+
92
+ # This will replace the assumption with the class you send via parameter
93
+ # The :: are optional, but I recommend you to be explicit about the modules of your class
94
+ def self.default_collection
95
+ ::SomeOtherClassName.all
96
+ end
97
+
98
+ def filter_by_author_name(value)
99
+ @collection = @collection.joins(:author).where(authors: { name: value })
100
+ end
101
+ end
102
+
103
+ ```
104
+
72
105
 
73
106
  ## Custom methods
74
107
 
@@ -7,7 +7,7 @@ module Querifier
7
7
  end
8
8
 
9
9
  def collection
10
- @collection ||= self.class.entity_class.all
10
+ @collection ||= self.class.default_collection
11
11
  end
12
12
 
13
13
  def params
@@ -19,13 +19,8 @@ module Querifier
19
19
  end
20
20
 
21
21
  module ClassMethods
22
- def entity_class(value = nil)
23
- return entity_class = value unless value.nil?
24
- @@entity_class ||= Object.const_get self.name.split('::').last.split('Query').first
25
- end
26
-
27
- def entity_class=(value)
28
- @@entity_class = value
22
+ def default_collection
23
+ @@default_collection ||= Object.const_get(self.name.split('::').last.split('Query').first).all
29
24
  end
30
25
  end
31
26
 
@@ -61,13 +61,23 @@ module Querifier
61
61
  @@default_sort = { id: :asc }
62
62
 
63
63
  def order_attributes(*value)
64
- return @@order_attributes = [*value] if value.any?
65
- @@order_attributes
64
+ return class_variable_set :@@order_attributes, [*value] if value.any?
65
+ begin
66
+ class_variable_get :@@order_attributes
67
+ rescue NameError
68
+ class_variable_set :@@order_attributes, []
69
+ class_variable_get :@@order_attributes
70
+ end
66
71
  end
67
72
 
68
73
  def default_sort(value = nil)
69
- return @@default_sort = value if value
70
- @@default_sort
74
+ return class_variable_set :@@default_sort, value if value
75
+ begin
76
+ class_variable_get :@@default_sort
77
+ rescue NameError
78
+ class_variable_set :@@default_sort, { id: :asc }
79
+ class_variable_get :@@default_sort
80
+ end
71
81
  end
72
82
  end
73
83
  end
@@ -9,7 +9,7 @@ module Querifier
9
9
 
10
10
  def filter
11
11
  return self if @filtered
12
- filter_params.each do |attribute|
12
+ filter_params.each do |(attribute, _)|
13
13
  value = filter_value(attribute)
14
14
  send("filter_by_#{attribute}", value) if value
15
15
  end
@@ -50,8 +50,13 @@ module Querifier
50
50
  @@where_attributes = []
51
51
 
52
52
  def where_attributes(*value)
53
- return @@where_attributes = [*value] if value.any?
54
- @@where_attributes
53
+ return class_variable_set :@@where_attributes, [*value] if value.any?
54
+ begin
55
+ class_variable_get :@@where_attributes
56
+ rescue NameError
57
+ class_variable_set :@@where_attributes, []
58
+ class_variable_get :@@where_attributes
59
+ end
55
60
  end
56
61
  end
57
62
  end
@@ -1,3 +1,3 @@
1
1
  module Querifier
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.2"
3
3
  end
data/querifier.gemspec CHANGED
@@ -32,6 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency 'railties', '>= 4.1.0', '< 6'
33
33
  # TODO
34
34
  spec.add_development_dependency "bundler", "~> 1.16"
35
- spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "rake", "~> 12.3"
36
36
  spec.add_development_dependency "rspec", "~> 3.0"
37
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: querifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hugo Farji
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-06 00:00:00.000000000 Z
11
+ date: 2018-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '10.0'
53
+ version: '12.3'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '10.0'
60
+ version: '12.3'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +79,6 @@ executables: []
79
79
  extensions: []
80
80
  extra_rdoc_files: []
81
81
  files:
82
- - ".byebug_history"
83
82
  - ".gitignore"
84
83
  - ".rspec"
85
84
  - ".travis.yml"
data/.byebug_history DELETED
@@ -1,53 +0,0 @@
1
- continue
2
- klass
3
- exit
4
- continue
5
- option
6
- exit
7
- !!!
8
- continue
9
- exit
10
- params.fetch(:order, {}).find_all { |(k, _)| self.class::ORDER_ATTRIBUTES.include? k }.to_h
11
- params.fetch(:order, {}).find_all { |(k, _)| self.class::ORDER_ATTRIBUTES.include? k }.flatten
12
- params.fetch(:order, {}).find_all { |(k, _)| self.class::ORDER_ATTRIBUTES.include? k }
13
- params.fetch(:order)
14
- )
15
- params.fetch(:order
16
- exit
17
- option && direction && self.class::ORDER_ATTRIBUTES.include?(option) && %w[asc desc].include?(direction.to_s.downcase)
18
- option && direction && self.class::ORDER_ATTRIBUTES.include?(option)
19
- option && direction
20
- direction
21
- option
22
- exit
23
- !!!
24
- continue
25
- %w[asc desc].include?(direction.to_s.downcase)
26
- %w[asc desc].include?(direction.downcase)
27
- self.class::ORDER_ATTRIBUTES.include?(option)
28
- valid_sort?(option, direction)
29
- order_params
30
- continue
31
- order_params
32
- direction
33
- option
34
- continue
35
- f
36
- continue
37
- self.class.entity_class.where
38
- self.class.entity_class
39
- self.class
40
- self
41
- continue
42
- @collection
43
- continue
44
- @collection
45
- collection
46
- continue
47
- @collection
48
- continue
49
- @collection
50
- continue
51
- value
52
- continue
53
- value