searchkon 0.1.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d1a85dcbc2fa987d795fc2cd5b70268215edec815153f6e7faba8b087756e7e
4
- data.tar.gz: 94ab0e106400d8b08d9f4a6cd3eaeba30361e7450a469d3975e7225b01b33327
3
+ metadata.gz: eb893a4d3dc86aa19c3da94c49e4fcb2746931308710ba6a165b5a39290a8cb4
4
+ data.tar.gz: 18eec74102de5b1ae4d5f07a965f682871f7bdfbff793f1ddf7ced1ea35a7c43
5
5
  SHA512:
6
- metadata.gz: aa72df68a529c67c96221351087865476c337d46462d32c3298eb305621e4c845d4f1e9bb88e1e04032077cbf976364950c0c6c0ff0044be9a70a67aa652393c
7
- data.tar.gz: c8ba2cf75c2160a480e515f5c5abd8db9a53d05498dd2d87e8835a01d12262d49d4c0d18cb68f771cc2872176e14fb85112a96e04a5eabb14900eaa8ec01c41b
6
+ metadata.gz: d11d1b0d6c13e55e4239f641c8fa65fa2378a2d856ca43d8f2ea09321dac83876258206ca5ee5791ce147a7be8e87acfba768c003116705bc1248b43f941d044
7
+ data.tar.gz: f09f8209e58b8be30119cc4da86b0e9e9c785e4c2a03f4df3626d5847e341bef6a8aad772133a00337386f415838d04a3c23b1dedd51388252f7c3b59862e274
@@ -7,7 +7,7 @@ module Searchkon
7
7
  def filter model, params = {}
8
8
  @model = model.constantize
9
9
  @res = @model.all
10
- valid_params = validate_params(params, @model.searchable_columns)
10
+ valid_params = validate_params(params[:filters], @model.searchable_columns)
11
11
  create_filters valid_params
12
12
  @res
13
13
  end
@@ -1,6 +1,6 @@
1
1
  module Searchkon
2
2
  module RegexFormatter
3
- SIMPLE_RANGE_FORMAT_REGEX = /\((.*)\.\.(.*)\)/
3
+ SIMPLE_RANGE_FORMAT_REGEX = /\((.*)\.\.(.*)\)/
4
4
  RELATIONAL_FORMAT_REGEX = /(.*)\.(.*)/
5
5
  DIGIT_RANGE_FORMAT_REGEX = /\((\d*)\.\.(\d*)\)/
6
6
  DATE_RANGE_FORMAT_REGEX = /\((\d{4}-\d{1,2}-\d{1,2})\.\.(\d{4}-\d{1,2}-\d{1,2})\)/
data/searchkon.gemspec CHANGED
@@ -1,10 +1,10 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'searchkon'
3
- s.version = '0.1.2'
3
+ s.version = '1.0.0'
4
4
  s.date = '2020-05-24'
5
5
  s.summary = "Search Command"
6
6
  s.description = "make search easy"
7
- s.authors = ["Majid Imanzade"]
7
+ s.authors = ["Majid Imanzade", 'Amin Samadzade']
8
8
  s.email = 'majidimanzade1@gmail.com'
9
9
  s.homepage = 'https://rubygems.org/gems/searchkon'
10
10
  s.homepage = "http://github.com/majidimanzade/searchkon"
@@ -16,4 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_development_dependency("rake")
17
17
  s.add_development_dependency("rspec")
18
18
  s.add_development_dependency "sqlite3"
19
+
20
+ s.add_dependency "activesupport"
21
+ s.add_dependency "activerecord"
19
22
  end
@@ -0,0 +1,3 @@
1
+ class Coupon < ActiveRecord::Base
2
+
3
+ end
@@ -0,0 +1,3 @@
1
+ class Payment < ActiveRecord::Base
2
+
3
+ end
@@ -1,5 +1,7 @@
1
1
  class Product < ActiveRecord::Base
2
- self.abstract_class = true
2
+
3
+ has_many :coupons
4
+ has_many :payments
3
5
 
4
6
  def self.searchable_columns
5
7
  {
@@ -7,6 +9,7 @@ class Product < ActiveRecord::Base
7
9
  exact: [
8
10
  'created_at',
9
11
  'coupons.id',
12
+ 'payments.id',
10
13
  'id'
11
14
  ]
12
15
  }
@@ -1,5 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/product')
2
+
3
3
  RSpec.describe Searchkon::QueryBuilder do
4
4
  describe 'query builder for filter' do
5
5
  let (:simple_where_params) do
@@ -31,7 +31,6 @@ RSpec.describe Searchkon::QueryBuilder do
31
31
 
32
32
  it 'should return simple where query' do
33
33
  query = "SELECT \"products\".* FROM \"products\" WHERE (products.title like '%foobar%') AND \"products\".\"id\" = 1"
34
-
35
34
  expect(Searchkon::QueryBuilder.filter('Product', simple_where_params).to_sql).to eq query
36
35
  end
37
36
 
@@ -57,8 +56,7 @@ RSpec.describe Searchkon::QueryBuilder do
57
56
 
58
57
  it 'should return simple where relational query with two relations' do
59
58
  relational_params = { filters: { 'coupons.id': 1, 'payments.id': 1 } }
60
- query = "SELECT \"products\".* FROM \"products\" INNER JOIN \"payments\" ON \"payments\".\"product_id\" = \"products\".\"id\" INNER JOIN \"coupons\" ON \"coupons\".\"product_id\" = \"products\".\"id\" WHERE \"payments\".\"id\" = 1 AND \"coupons\".\"id\" = 1"
61
-
59
+ query = "SELECT \"products\".* FROM \"products\" INNER JOIN \"coupons\" ON \"coupons\".\"product_id\" = \"products\".\"id\" INNER JOIN \"payments\" ON \"payments\".\"product_id\" = \"products\".\"id\" WHERE \"coupons\".\"id\" = 1 AND \"payments\".\"id\" = 1"
62
60
  expect(Searchkon::QueryBuilder.filter('Product', relational_params).to_sql).to eq query
63
61
  end
64
62
 
data/spec/schema.rb CHANGED
@@ -3,8 +3,17 @@ ActiveRecord::Schema.define do
3
3
 
4
4
  create_table :products, :force => true do |t|
5
5
  t.string :key
6
- t.string :name
6
+ t.string :title
7
+ t.timestamps
8
+ end
9
+
10
+ create_table :coupons, :force => true do |t|
11
+ t.string :title
12
+ t.timestamps
13
+ end
7
14
 
15
+ create_table :payments, :force => true do |t|
16
+ t.string :title
8
17
  t.timestamps
9
18
  end
10
19
 
data/spec/spec_helper.rb CHANGED
@@ -10,4 +10,6 @@ require 'rspec'
10
10
  ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
11
11
 
12
12
  load File.dirname(__FILE__) + '/schema.rb'
13
- require File.dirname(__FILE__) + '/product.rb'
13
+ require File.dirname(__FILE__) + '/models/coupon.rb'
14
+ require File.dirname(__FILE__) + '/models/payment.rb'
15
+ require File.dirname(__FILE__) + '/models/product.rb'
metadata CHANGED
@@ -1,10 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: searchkon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Majid Imanzade
8
+ - Amin Samadzade
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
@@ -66,6 +67,34 @@ dependencies:
66
67
  - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: activesupport
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: activerecord
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
69
98
  description: make search easy
70
99
  email: majidimanzade1@gmail.com
71
100
  executables: []
@@ -83,7 +112,9 @@ files:
83
112
  - lib/searchkon/searchables.rb
84
113
  - searchkon.gemspec
85
114
  - spec/filterable_spec.rb
86
- - spec/product.rb
115
+ - spec/models/coupon.rb
116
+ - spec/models/payment.rb
117
+ - spec/models/product.rb
87
118
  - spec/query_builder_spec.rb
88
119
  - spec/schema.rb
89
120
  - spec/spec_helper.rb