active_record_extended 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +0 -0
  3. data/.gitignore +0 -0
  4. data/.rspec +0 -0
  5. data/.rubocop.yml +0 -0
  6. data/.ruby-gemset +0 -0
  7. data/.ruby-version +0 -0
  8. data/.travis.yml +0 -0
  9. data/CHANGELOG.md +8 -0
  10. data/CODE_OF_CONDUCT.md +0 -0
  11. data/Gemfile +0 -0
  12. data/Gemfile.lock +1 -1
  13. data/LICENSE.txt +0 -0
  14. data/README.md +0 -0
  15. data/Rakefile +1 -1
  16. data/active_record_extended.gemspec +1 -1
  17. data/gemfiles/activerecord-51.gemfile +0 -0
  18. data/gemfiles/activerecord-52+.gemfile +0 -0
  19. data/gemfiles/activerecord-52.gemfile +0 -0
  20. data/lib/active_record_extended/active_record.rb +4 -4
  21. data/lib/active_record_extended/arel/nodes.rb +0 -0
  22. data/lib/active_record_extended/arel/predications.rb +0 -0
  23. data/lib/active_record_extended/arel/visitors/postgresql_decorator.rb +0 -6
  24. data/lib/active_record_extended/arel.rb +0 -0
  25. data/lib/active_record_extended/patch/5_1/where_clause.rb +0 -0
  26. data/lib/active_record_extended/patch/5_2/where_clause.rb +0 -0
  27. data/lib/active_record_extended/predicate_builder/array_handler_decorator.rb +0 -0
  28. data/lib/active_record_extended/query_methods/any_of.rb +0 -0
  29. data/lib/active_record_extended/query_methods/either.rb +0 -0
  30. data/lib/active_record_extended/query_methods/where_chain.rb +29 -0
  31. data/lib/active_record_extended/version.rb +1 -1
  32. data/lib/active_record_extended.rb +0 -0
  33. data/spec/active_record_extended_spec.rb +0 -0
  34. data/spec/query_methods/any_of_spec.rb +0 -0
  35. data/spec/query_methods/array_query_spec.rb +0 -0
  36. data/spec/query_methods/either_spec.rb +0 -0
  37. data/spec/query_methods/hash_query_spec.rb +0 -0
  38. data/spec/spec_helper.rb +1 -4
  39. data/spec/sql_inspections/any_of_sql_spec.rb +0 -0
  40. data/spec/sql_inspections/arel/array_spec.rb +0 -0
  41. data/spec/sql_inspections/contains_sql_queries_spec.rb +0 -0
  42. data/spec/sql_inspections/either_sql_spec.rb +0 -0
  43. data/spec/support/database_cleaner.rb +0 -0
  44. data/spec/support/models.rb +0 -0
  45. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcb4ef3928cc2b75f2499ccdf52359bb101a0d6da8e26271f396fdefd755d5b4
4
- data.tar.gz: 5dfd11998b3e4e461f25533286ae1e418c72b14dc8a18c4680956457d071cef6
3
+ metadata.gz: ea05f761dcce2d09ac0b86e315396e9f6bbc822d53df4bf085bc1b161a28904e
4
+ data.tar.gz: 42283db511f3ca78b5d6963c2d1cf642b1bbbf0f8c77416f37d56843e0c8a957
5
5
  SHA512:
6
- metadata.gz: b6ed469df6a02c42941f78e1dc499334790221fdd87a579080dca4d4b862641577fa3f5678bcd792a9f20367134816efa381ded242e8766406856751790f5288
7
- data.tar.gz: 87c1c2e5af7f20c6f7b8d352e7953ba36074608ae66e8d1215bd0397722ccf7107553e4b25ed11ce9c16338d67519057ad3739d92eed7e46101a42fc760676e8
6
+ metadata.gz: 050ad5a8796e2886691b63723470d506002c62a53ed0c54b658678c257d9d60e6a50aab580bd189f207c30c28c6c53177a75411b73b03d3255b9f9b7cc4a2fb1
7
+ data.tar.gz: bddfdc0cc704d95e98785697a9b1b80e43b193ec97acc40ba12fa0663010b80e9b65437227c16b00f01a52ea3d63ef4d9b04686c4ad66b596d5c05eb8822e0a4
data/.codeclimate.yml CHANGED
File without changes
data/.gitignore CHANGED
File without changes
data/.rspec CHANGED
File without changes
data/.rubocop.yml CHANGED
File without changes
data/.ruby-gemset CHANGED
File without changes
data/.ruby-version CHANGED
File without changes
data/.travis.yml CHANGED
File without changes
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 0.3.0 - May 9th 2018
2
+
3
+ - Fixed ActiveRecord QueryMethod constant load error.
4
+
5
+ # 0.2.1 - May 6th 2018
6
+
7
+ Changed how where clause is required. This is to hopefully future proof the next minior update to ActiveRecord.
8
+
1
9
  # 0.2.0 - May 6th 2018
2
10
 
3
11
  Added ActiveRecord Where Chain Functionality
data/CODE_OF_CONDUCT.md CHANGED
File without changes
data/Gemfile CHANGED
File without changes
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_record_extended (0.2.0)
4
+ active_record_extended (0.3.0)
5
5
  activerecord (>= 5.1, < 6.0)
6
6
  ar_outer_joins (~> 0.2)
7
7
  pg (~> 0.18)
data/LICENSE.txt CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ task :setup do
11
11
  if File.exist?(".env")
12
12
  puts "This will overwrite your existing .env file"
13
13
  end
14
- db_name = fetch_input("Enter your database name: [postgres_ext_test] ")
14
+ db_name = fetch_input("Enter your database name: [active_record_extended_test] ")
15
15
  db_user = fetch_input("Enter your database user: [] ")
16
16
  db_password = fetch_input("Enter your database password: [] ")
17
17
  db_server = fetch_input("Enter your database server: [localhost] ")
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
 
14
14
  spec.summary = "Adds extended functionality to Activerecord Postgres implementation"
15
15
  spec.description = "Adds extended functionality to Activerecord Postgres implementation"
16
- spec.homepage = "https://github.com/georgekaraszi/active_record_extended"
16
+ spec.homepage = "https://github.com/georgekaraszi/ActiveRecordExtended"
17
17
  spec.license = "MIT"
18
18
 
19
19
  spec.files = `git ls-files`.split("\n")
File without changes
File without changes
File without changes
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "active_record"
4
+ require "active_record/relation"
5
+ require "active_record/relation/query_methods"
4
6
 
5
7
  require "active_record_extended/predicate_builder/array_handler_decorator"
6
- require "active_record_extended/query_methods/where_chain"
7
- require "active_record_extended/query_methods/either"
8
- require "active_record_extended/query_methods/any_of"
8
+ Dir["#{File.dirname(__FILE__)}/query_methods/**/*.rb"].each { |f| require File.expand_path(f) }
9
9
 
10
- if ActiveRecord::VERSION::MAJOR >= 5 && ActiveRecord::VERSION::MINOR == 1
10
+ if ActiveRecord::VERSION::MAJOR == 5 && ActiveRecord::VERSION::MINOR == 1
11
11
  require "active_record_extended/patch/5_1/where_clause"
12
12
  elsif ActiveRecord::VERSION::MAJOR >= 5
13
13
  require "active_record_extended/patch/5_2/where_clause"
File without changes
File without changes
@@ -55,12 +55,6 @@ module ActiveRecordExtended
55
55
  infix_value object, collector, " >>= "
56
56
  end
57
57
 
58
- def visit_Arel_Nodes_AnyOf(object, collector)
59
- pp object
60
- pp collector
61
- collector
62
- end
63
-
64
58
  def matchable_column?(col, object)
65
59
  col.name == object.left.name.to_s || col.name == object.left.relation.name.to_s
66
60
  end
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,6 +2,9 @@
2
2
 
3
3
  module ActiveRecordExtended
4
4
  module WhereChain
5
+ # Finds Records that have an array column that contain any a set of values
6
+ # User.where.overlap(tags: [1,2])
7
+ # # SELECT * FROM users WHERE tags && {1,2}
5
8
  def overlap(opts, *rest)
6
9
  substitute_comparisons(opts, rest, Arel::Nodes::Overlap, "overlap")
7
10
  end
@@ -18,14 +21,40 @@ module ActiveRecordExtended
18
21
  substitute_comparisons(opts, rest, Arel::Nodes::ContainsEquals, "contains_or_equals")
19
22
  end
20
23
 
24
+ # Finds Records that contain an element in an array column
25
+ # User.where.any(tags: 3)
26
+ # # SELECT user.* FROM user WHERE 3 = ANY(user.tags)
21
27
  def any(opts, *rest)
22
28
  equality_to_function("ANY", opts, rest)
23
29
  end
24
30
 
31
+ # Finds Records that contain a single matchable array element
32
+ # User.where.all(tags: 3)
33
+ # # SELECT user.* FROM user WHERE 3 = ALL(user.tags)
25
34
  def all(opts, *rest)
26
35
  equality_to_function("ALL", opts, rest)
27
36
  end
28
37
 
38
+ # Finds Records that contains a nested set elements
39
+ #
40
+ # Array Column Type:
41
+ # User.where.contains(tags: [1, 3])
42
+ # # SELECT user.* FROM user WHERE user.tags @> {1,3}
43
+ #
44
+ # HStore Column Type:
45
+ # User.where.contains(data: { nickname: 'chainer' })
46
+ # # SELECT user.* FROM user WHERE user.data @> 'nickname' => 'chainer'
47
+ #
48
+ # JSONB Column Type:
49
+ # User.where.contains(data: { nickname: 'chainer' })
50
+ # # SELECT user.* FROM user WHERE user.data @> {'nickname': 'chainer'}
51
+ #
52
+ # This can also be used along side joined tables
53
+ #
54
+ # JSONB Column Type Example:
55
+ # Tag.joins(:user).where.contains(user: { data: { nickname: 'chainer' } })
56
+ # # SELECT tags.* FROM tags INNER JOIN user on user.id = tags.user_id WHERE user.data @> { nickname: 'chainer' }
57
+ #
29
58
  def contains(opts, *rest)
30
59
  build_where_chain(opts, rest) do |arel|
31
60
  case arel
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordExtended
4
- VERSION = "0.2.1"
4
+ VERSION = "0.3.0"
5
5
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "active_record"
3
+ require "active_record_extended"
4
4
 
5
5
  unless ENV["DATABASE_URL"]
6
6
  require "dotenv"
@@ -23,6 +23,3 @@ RSpec.configure do |config|
23
23
  c.syntax = :expect
24
24
  end
25
25
  end
26
-
27
- # Gem files must be loaded last
28
- require "active_record_extended"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_extended
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Protacio-Karaszi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-05-06 00:00:00.000000000 Z
13
+ date: 2018-05-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -172,7 +172,7 @@ files:
172
172
  - spec/sql_inspections/either_sql_spec.rb
173
173
  - spec/support/database_cleaner.rb
174
174
  - spec/support/models.rb
175
- homepage: https://github.com/georgekaraszi/active_record_extended
175
+ homepage: https://github.com/georgekaraszi/ActiveRecordExtended
176
176
  licenses:
177
177
  - MIT
178
178
  metadata: {}