database_consistency 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/database_consistency/checkers/base_checker.rb +20 -1
- data/lib/database_consistency/checkers/missing_index_checker.rb +5 -6
- data/lib/database_consistency/configuration.rb +2 -1
- data/lib/database_consistency/processors/associations_processor.rb +2 -2
- data/lib/database_consistency/processors/base_processor.rb +5 -0
- data/lib/database_consistency/processors/columns_processor.rb +2 -2
- data/lib/database_consistency/processors/validators_processor.rb +2 -2
- data/lib/database_consistency/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf718fbfde9b47e8d76e4e77ff2fc8a70ace19a9761eed13c2576b421fab406b
|
4
|
+
data.tar.gz: e212220bdb69019c813686230787ab4cda15a455e997ce37b6b9288067ce36f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd5ae1304d58ab4b8ffffbc2408fde5721f6e1026743c49c08ef93566fa5524293d9fb9f181a2a8129dfff7a1883477dcda5fc0264b411cd9d91990d590ae544
|
7
|
+
data.tar.gz: 2f5af1682db86a9df202227d8c9ff760930c3ef245d1a1f5a9a4d138f30412d32ccee5589c5ce5d9ba1a1a19a79a6944bbae2ed50679297c055026a0ed14faf5
|
@@ -4,6 +4,18 @@ module DatabaseConsistency
|
|
4
4
|
module Checkers
|
5
5
|
# The base class for checkers
|
6
6
|
class BaseChecker
|
7
|
+
# @param [DatabaseConsistency::Configuration]
|
8
|
+
#
|
9
|
+
# @return [Boolean]
|
10
|
+
def self.enabled?(configuration)
|
11
|
+
configuration.enabled?('DatabaseConsistencyCheckers', checker_name)
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [String]
|
15
|
+
def self.checker_name
|
16
|
+
@checker_name ||= name.split('::').last
|
17
|
+
end
|
18
|
+
|
7
19
|
# @return [Hash, nil]
|
8
20
|
def report
|
9
21
|
return unless preconditions
|
@@ -11,7 +23,14 @@ module DatabaseConsistency
|
|
11
23
|
@report ||= check
|
12
24
|
end
|
13
25
|
|
26
|
+
# @return [Hash, nil]
|
27
|
+
def report_if_enabled?(configuration)
|
28
|
+
report if enabled?(configuration)
|
29
|
+
end
|
30
|
+
|
14
31
|
# @param [DatabaseConsistency::Configuration] configuration
|
32
|
+
#
|
33
|
+
# @return [Boolean]
|
15
34
|
def enabled?(configuration)
|
16
35
|
configuration.enabled?(table_or_model_name, column_or_attribute_name, checker_name)
|
17
36
|
end
|
@@ -30,7 +49,7 @@ module DatabaseConsistency
|
|
30
49
|
|
31
50
|
# @return [String]
|
32
51
|
def checker_name
|
33
|
-
@checker_name ||= self.class.
|
52
|
+
@checker_name ||= self.class.checker_name
|
34
53
|
end
|
35
54
|
|
36
55
|
def table_or_model_name
|
@@ -11,13 +11,12 @@ module DatabaseConsistency
|
|
11
11
|
|
12
12
|
# We skip check when:
|
13
13
|
# - association isn't a `HasOne` or `HasMany`
|
14
|
+
# - association has `through` option
|
14
15
|
def preconditions
|
15
|
-
[
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
ActiveRecord::Associations::HasManyThroughAssociation
|
20
|
-
].include?(association.association_class)
|
16
|
+
%i[
|
17
|
+
has_one
|
18
|
+
has_many
|
19
|
+
].include?(association.macro) && association.through_reflection.nil?
|
21
20
|
end
|
22
21
|
|
23
22
|
# Table of possible statuses
|
@@ -13,9 +13,9 @@ module DatabaseConsistency
|
|
13
13
|
def check
|
14
14
|
Helper.models.flat_map do |model|
|
15
15
|
model.reflect_on_all_associations.flat_map do |association|
|
16
|
-
|
16
|
+
enabled_checkers.map do |checker_class|
|
17
17
|
checker = checker_class.new(model, association)
|
18
|
-
checker.
|
18
|
+
checker.report_if_enabled?(configuration)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end.compact
|
@@ -13,9 +13,9 @@ module DatabaseConsistency
|
|
13
13
|
def check
|
14
14
|
Helper.parent_models.flat_map do |model|
|
15
15
|
model.columns.flat_map do |column|
|
16
|
-
|
16
|
+
enabled_checkers.map do |checker_class|
|
17
17
|
checker = checker_class.new(model, column)
|
18
|
-
checker.
|
18
|
+
checker.report_if_enabled?(configuration)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end.compact
|
@@ -17,9 +17,9 @@ module DatabaseConsistency
|
|
17
17
|
Helper.parent_models.flat_map do |model|
|
18
18
|
model.validators.flat_map do |validator|
|
19
19
|
validator.attributes.flat_map do |attribute|
|
20
|
-
|
20
|
+
enabled_checkers.map do |checker_class|
|
21
21
|
checker = checker_class.new(model, attribute, validator)
|
22
|
-
checker.
|
22
|
+
checker.report_if_enabled?(configuration)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
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: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeniy Demin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|