database_consistency 1.1.3 → 1.1.4

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
  SHA256:
3
- metadata.gz: 9e4c24aeb235c8283ce761d7b4d1e3511246eae28c761a55b4f8ef180a090b22
4
- data.tar.gz: d8e3b783eae3e68e88126c7f9d77de062748201652ec46492522eda6af0722bf
3
+ metadata.gz: 33bfe05b79b4c641cfa784c2e60894004910bfcbf594d3045ce51b586eec5812
4
+ data.tar.gz: 20355a79ba3aa941f85764203474e8a16b5c91397ce008940f4ecb9a2e45d71a
5
5
  SHA512:
6
- metadata.gz: 005c1fa13f5aab3d833c9fd0690907f5df81a0d34ee2dcb5ea19ace51ed41f1438c803d56b95d3573eaa0938b8d9295a04dd5e2dafb6a6ab6ca48c6fcba3af4e
7
- data.tar.gz: fab16372c3782df28f84aac35b997c31ccbb68d3be8ee0b8442e09061c8a85797da584153fc3de151ff1761227348b17041302260daede249b3b10753a1d610b
6
+ metadata.gz: 57e588223f73d55f10d00e47c7492de68849f3487a272293beb8eba3547bea679f4c2322a93fc2ac625177426252ba1d97650197515493a17218face6149b493
7
+ data.tar.gz: d21a4eab903327f8fd7ea775828c45c72674f6edf58b1f8fb0889cd986a79adaf514a160bb30497b9b46003b180888b97ddfe94c25b68a106ed4e15a97d8d25b
@@ -2,18 +2,23 @@
2
2
 
3
3
  module DatabaseConsistency
4
4
  module Checkers
5
- # This class checks if required +belongs_to+ has foreign key constraint
6
- class BelongsToPresenceChecker < ValidatorChecker
7
- MISSING_FOREIGN_KEY = 'model should have proper foreign key in the database'
5
+ # This class checks if non polymorphic +belongs_to+ association has foreign key constraint
6
+ class ForeignKeyChecker < AssociationChecker
7
+ MISSING_FOREIGN_KEY = 'should have foreign key in the database'
8
8
 
9
9
  private
10
10
 
11
11
  # We skip check when:
12
- # - validator is a not a presence validator
13
- # - there is no belongs_to association with given name
14
- # - belongs_to association is polymorphic
12
+ # - association isn't belongs_to association
13
+ # - association is polymorphic
15
14
  def preconditions
16
- validator.kind == :presence && association && association.belongs_to? && !association.polymorphic?
15
+ supported? && association.belongs_to? && !association.polymorphic?
16
+ end
17
+
18
+ def supported?
19
+ return false if ActiveRecord::VERSION::MAJOR < 5 && ActiveRecord::Base.connection_config[:adapter] == 'sqlite3'
20
+
21
+ true
17
22
  end
18
23
 
19
24
  # Table of possible statuses
@@ -28,10 +33,6 @@ module DatabaseConsistency
28
33
  report_template(:fail, MISSING_FOREIGN_KEY)
29
34
  end
30
35
  end
31
-
32
- def association
33
- @association ||= model.reflect_on_association(attribute)
34
- end
35
36
  end
36
37
  end
37
38
  end
@@ -6,6 +6,7 @@ module DatabaseConsistency
6
6
  class AssociationsProcessor < BaseProcessor
7
7
  CHECKERS = [
8
8
  Checkers::MissingIndexChecker,
9
+ Checkers::ForeignKeyChecker,
9
10
  Checkers::ForeignKeyTypeChecker
10
11
  ].freeze
11
12
 
@@ -5,7 +5,6 @@ module DatabaseConsistency
5
5
  # The class to process validators
6
6
  class ValidatorsProcessor < BaseProcessor
7
7
  CHECKERS = [
8
- Checkers::BelongsToPresenceChecker,
9
8
  Checkers::MissingUniqueIndexChecker
10
9
  ].freeze
11
10
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DatabaseConsistency
4
- VERSION = '1.1.3'
4
+ VERSION = '1.1.4'
5
5
  end
@@ -19,6 +19,7 @@ require 'database_consistency/checkers/base_checker'
19
19
 
20
20
  require 'database_consistency/checkers/association_checkers/association_checker'
21
21
  require 'database_consistency/checkers/association_checkers/missing_index_checker'
22
+ require 'database_consistency/checkers/association_checkers/foreign_key_checker'
22
23
  require 'database_consistency/checkers/association_checkers/foreign_key_type_checker'
23
24
 
24
25
  require 'database_consistency/checkers/column_checkers/column_checker'
@@ -27,7 +28,6 @@ require 'database_consistency/checkers/column_checkers/length_constraint_checker
27
28
  require 'database_consistency/checkers/column_checkers/primary_key_type_checker'
28
29
 
29
30
  require 'database_consistency/checkers/validator_checkers/validator_checker'
30
- require 'database_consistency/checkers/validator_checkers/belongs_to_presence_checker'
31
31
  require 'database_consistency/checkers/validator_checkers/missing_unique_index_checker'
32
32
 
33
33
  require 'database_consistency/checkers/validators_fraction_checkers/validators_fraction_checker'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_consistency
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeniy Demin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-25 00:00:00.000000000 Z
11
+ date: 2021-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -133,6 +133,7 @@ files:
133
133
  - bin/database_consistency
134
134
  - lib/database_consistency.rb
135
135
  - lib/database_consistency/checkers/association_checkers/association_checker.rb
136
+ - lib/database_consistency/checkers/association_checkers/foreign_key_checker.rb
136
137
  - lib/database_consistency/checkers/association_checkers/foreign_key_type_checker.rb
137
138
  - lib/database_consistency/checkers/association_checkers/missing_index_checker.rb
138
139
  - lib/database_consistency/checkers/base_checker.rb
@@ -144,7 +145,6 @@ files:
144
145
  - lib/database_consistency/checkers/index_checkers/redundant_index_checker.rb
145
146
  - lib/database_consistency/checkers/index_checkers/redundant_unique_index_checker.rb
146
147
  - lib/database_consistency/checkers/index_checkers/unique_index_checker.rb
147
- - lib/database_consistency/checkers/validator_checkers/belongs_to_presence_checker.rb
148
148
  - lib/database_consistency/checkers/validator_checkers/missing_unique_index_checker.rb
149
149
  - lib/database_consistency/checkers/validator_checkers/validator_checker.rb
150
150
  - lib/database_consistency/checkers/validators_fraction_checkers/column_presence_checker.rb