queryko 1.0.2 → 1.1.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: 9b6fc3082f0af793f3662b64c9d8adb44011876052d3ad668df7ac6c3e091022
4
- data.tar.gz: 46c52021042f4ee7fa94c414e7bc46ff8d864db23d22a59f75bf52a54f292f0f
3
+ metadata.gz: c7a137e9ef74fc1cb784fa9f67e9245bde68ff624adfd984e5ee2dc09439169c
4
+ data.tar.gz: 60df495dfd96bb8e25c2ec271f20eed65dc87883fb8f9519b812de8b35c65c04
5
5
  SHA512:
6
- metadata.gz: 7c07e549329d0a33b30c35d331571ab02c81b88b7f87a7a7056ac6b39154cfe707ae552ed054c9287908ed2010b6b1142997840012f3c8eac69a7f77f5345e87
7
- data.tar.gz: 87f949beb23627b5c1cda6d220269bb674234b589d7d61886e04b8f8ee095e923ede7b0a069340da87edc4272857063f2f194f0be24569c7632e0485db0cb156
6
+ metadata.gz: 110cc3fc4e8ccea70c773ff32efaba9af14883980d40af9f5a2d908aada62a460346bd41548a72437963ea626e1139c5af9252d4c1a6d996bc3790643b979e43
7
+ data.tar.gz: e4750c2293eae142af7b9f5bbddf8e5c94736468fa9a96cd949be4bdc5715377da645f9b2c472a3eb7f2e9b8d68a3c5b7b691faaef925b48c0087160ad289b92
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- queryko (1.0.2)
4
+ queryko (1.1.0)
5
5
  activerecord (>= 4.0)
6
- activesupport
6
+ activesupport (>= 4.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -1,11 +1,15 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/queryko.svg)](https://badge.fury.io/rb/queryko)
2
2
  # Queryko
3
- This gem provides additional functionality on your query objects. It will filter and paginate your query by supplying an option
3
+ This gem provides additional functionality on your query objects. It will filter and paginate your query by supplying arguments directly from controller params
4
4
 
5
5
  ## Installation
6
- For now, it only works with kaminari
7
6
  ```ruby
7
+ # Pagination
8
8
  gem 'kaminari'
9
+ #or
10
+ gem 'will_paginate'
11
+
12
+ # Query Object
9
13
  gem 'queryko'
10
14
  ```
11
15
 
@@ -24,6 +28,8 @@ class ProductsQuery < Queryko::QueryObject
24
28
  add_range_attributes :created_at, :price
25
29
  add_searchables :name, :vendor
26
30
 
31
+ table_name 'my_products' # optional
32
+
27
33
  def initialize params={}, relation = Product.all
28
34
  super(params, relation)
29
35
  end
@@ -34,7 +40,13 @@ end
34
40
  Filter your query by appending `_min` or `_max` on your defined attributes. You can also filter searc3h by attribute.
35
41
  As long as you defined it in your query object definition.
36
42
  ``` ruby
43
+ # Collection
37
44
  products = ProductsQuery.new(price_min: 100, price_max: 150, name: 'Milk').call
45
+ products = ProductsQuery.new(since_id: 26).call
46
+
47
+ # Count
48
+ products = ProductsQuery.new(created_at_min: 'Jan 1, 2019').count
49
+ products = ProductsQuery.new(name: 'Bag').count
38
50
  ```
39
51
 
40
52
  #### Object Methods
@@ -16,7 +16,7 @@ module Queryko
16
16
  end
17
17
  end
18
18
  def filter_after attribute
19
- self.relation = relation.where("#{attribute} > ?", params["after_#{attribute}".to_sym])
19
+ self.relation = relation.where("'#{defined_table_name}'.'#{attribute}' > ?", params["after_#{attribute}".to_sym])
20
20
  end
21
21
  end
22
22
  end
@@ -0,0 +1,31 @@
1
+ module Queryko
2
+ module Naming
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ base.class_eval do
6
+ class_attribute :defined_table_name, default: :table, instance_writer: false
7
+ set_table_name
8
+
9
+ def table_name
10
+ self.defined_table_name
11
+ end
12
+ end
13
+ end
14
+
15
+ module ClassMethods
16
+ def set_table_name
17
+ self.defined_table_name = self.inferered_from_class_name
18
+ end
19
+
20
+ def table_name(name = nil)
21
+ return self.defined_table_name unless name
22
+ self.defined_table_name = name.to_s
23
+ end
24
+
25
+ def inferered_from_class_name
26
+ # class names should be in plural form by default. No need to tableize
27
+ self.class.name.chomp('Query').split('::').last.underscore
28
+ end
29
+ end
30
+ end
31
+ end
@@ -2,11 +2,14 @@ require "active_support/core_ext/class/attribute"
2
2
  require "queryko/range_attributes"
3
3
  require "queryko/searchables"
4
4
  require "queryko/after_attributes"
5
+ require "queryko/naming"
6
+
5
7
  module Queryko
6
8
  class QueryObject
7
9
  attr_reader :countable_resource
8
10
  include Queryko::RangeAttributes
9
11
  include Queryko::Searchables
12
+ include Queryko::Naming
10
13
  # include AfterAttributes
11
14
 
12
15
  def initialize(params = {}, rel)
@@ -90,7 +93,7 @@ module Queryko
90
93
  end
91
94
 
92
95
  def since_id
93
- relation.where("id > ?", params[:since_id])
96
+ relation.where("'#{defined_table_name}'.'id' > ?", params[:since_id])
94
97
  end
95
98
 
96
99
  end
@@ -19,13 +19,13 @@ module Queryko
19
19
  def attribute_min key
20
20
  # Calm down. column_name is whitelisted. check #add_range_attributes method
21
21
  column_name = key.to_s.gsub(/_min$/, "")
22
- relation.where("#{column_name} >= ?", params[key.to_sym])
22
+ relation.where("'#{defined_table_name}'.'#{column_name}' >= ?", params[key.to_sym])
23
23
  end
24
24
 
25
25
  def attribute_max key
26
26
  # Calm down. column_name is whitelisted. check #add_range_attributes method
27
27
  column_name = key.to_s.gsub(/_max$/, "")
28
- relation.where("#{column_name} <= ?", params[key.to_sym])
28
+ relation.where("'#{defined_table_name}'.'#{column_name}' <= ?", params[key.to_sym])
29
29
  end
30
30
  end
31
31
  end
@@ -1,3 +1,3 @@
1
1
  module Queryko
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.0"
3
3
  end
data/queryko.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.require_paths = ["lib"]
34
34
 
35
35
  spec.add_dependency 'activerecord', '>= 4.0'
36
- spec.add_dependency "activesupport"
36
+ spec.add_dependency "activesupport", '>= 4.0'
37
37
 
38
38
  spec.add_development_dependency "bundler", "~> 1.16"
39
39
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: queryko
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Nelson Valeros
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-13 00:00:00.000000000 Z
11
+ date: 2019-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '4.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '4.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -143,6 +143,7 @@ files:
143
143
  - bin/setup
144
144
  - lib/queryko.rb
145
145
  - lib/queryko/after_attributes.rb
146
+ - lib/queryko/naming.rb
146
147
  - lib/queryko/query_object.rb
147
148
  - lib/queryko/range_attributes.rb
148
149
  - lib/queryko/searchables.rb