mv-mysql 2.2.1 → 2.2.2

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
  SHA1:
3
- metadata.gz: 89fbc77061d52d4aec55f6316b1d74352d3eabe5
4
- data.tar.gz: 75c29454e1559330cb16e22b26ad0a1d5402892a
3
+ metadata.gz: a1cc68c185a5299f5c76cfe82688f2b75567f694
4
+ data.tar.gz: c35366ad8e92924a6ed1cbcb95261be155be26fa
5
5
  SHA512:
6
- metadata.gz: b0db6760c32bf4fadd34c4806fe11ea38ec567ad4fadaedbab61cdaef6865695bee95cd700fd7184a74b7cd31e769752e95ca33b3c8372e79dd634a68d7cec08
7
- data.tar.gz: 76c29214bff9d89193459a1fecebb86edf101bf6151be90cd0ff033894bf78aa28854939256c80293de8c3c21d360472f55fa528f383cf54e2f54e074ed4a006
6
+ metadata.gz: e6b215675ad6937197abe5806428f214e9cb852a542acc6507d3adc3ca2fd8b352fe0988ff4e868d311b5ab3b2dfc0bff8fe91c0ff260189fb9a5cdd15d5c0ca
7
+ data.tar.gz: ebf84711da807433df3bd2f8068eaf4e116565574c6b9d3cf9bbf144ae7a1d99fc2052e607af9f6e52a50403501f59c52d06c42cb1c6bd7d2438aaf793d2c03f
data/README.md CHANGED
@@ -14,6 +14,7 @@ Define validations directly in DB as MySQL constraints and integrate them into y
14
14
  * [exclusion](#exclusion)
15
15
  * [presence](#presence)
16
16
  * [absence](#absence)
17
+ * [format](#format)
17
18
  * [custom](#custom)
18
19
  * [Version History](#version history)
19
20
  * [Contributing](#contributing)
@@ -538,6 +539,99 @@ Define validations directly in DB as MySQL constraints and integrate them into y
538
539
  * `allow_blank` - ignore validation for blank values. Default value: `true`
539
540
  * `as` - defines the way how constraint will be implemented. Possible values: `[:trigger]` Default value: `:trigger`
540
541
 
542
+
543
+ ### format
544
+
545
+ Examples:
546
+
547
+ allows only values that contains 'word' inside:
548
+
549
+ ```ruby
550
+ def up
551
+ validates :table_name, :column_name, format: { with: /word/ }
552
+ end
553
+
554
+ def down
555
+ validates :table_name, :column_name, format: false
556
+ end
557
+ ```
558
+
559
+ with failure message:
560
+
561
+ ```ruby
562
+ def up
563
+ validates :table_name, :column_name,
564
+ format: { with: /word/,
565
+ message: 'Column_name value should contain start word' }
566
+ end
567
+
568
+ def down
569
+ validates :table_name, :column_name, format: false
570
+ end
571
+ ```
572
+
573
+ implemented as trigger:
574
+
575
+ ```ruby
576
+ def up
577
+ validates :table_name, :column_name,
578
+ format: { with: /word/,
579
+ message: 'Column_name value should contain start word',
580
+ as: :trigger }
581
+ end
582
+
583
+ def down
584
+ validates :table_name, :column_name, format: false
585
+ end
586
+ ```
587
+
588
+ all above are available in a create and change table blocks:
589
+
590
+ ```ruby
591
+ def change
592
+ create_table :table_name do |t|
593
+ t.string :column_name, validates { format: { with: /word/ } }
594
+ end
595
+ end
596
+ ```
597
+
598
+ ```ruby
599
+ def up
600
+ change :table_name do |t|
601
+ t.change :column_name, :string, validates: { format: { with: /word/ } }
602
+ end
603
+ end
604
+
605
+ def down
606
+ change :table_name do |t|
607
+ t.change :column_name, :string, validates: { format: false }
608
+ end
609
+ end
610
+ ```
611
+
612
+ simplifications (version >= 2.1 is required):
613
+
614
+ ```ruby
615
+ def change
616
+ create_table :table_name do |t|
617
+ t.string :contains_word, format: /word/
618
+ t.string :contains_word_in_trigger, format: { with: /word/,
619
+ as: :trigger }
620
+ end
621
+ end
622
+ ```
623
+
624
+ Options:
625
+
626
+ * `with` - regular expression that column value should be matched to
627
+ * `message` - message that should be shown if validation failed
628
+ * `on` - validation event. Possible values `[:save, :update, :create]`. Ignored unless `:as == :trigger`. Default value: `:save`
629
+ * `create_tigger_name` - Name of the 'before insert' trigger that will be created if `:as == :trigger` && `:on` in `[:save, :create]`
630
+ * `update_tigger_name` - Name of the 'before update' trigger that will be created if `:as == :trigger` && `:on` in `[:save, :update]`
631
+ * `allow_nil` - ignore validation for `nil` values. Default value: `false`
632
+ * `allow_blank` - ignore validation for blank values. Default value: `false`
633
+ * `as` - defines the way how constraint will be implemented. Possible values: `[:trigger]` Default value: `:trigger`
634
+
541
635
  ### custom
542
636
 
543
637
  (version >= 2.1 is required)
@@ -651,6 +745,14 @@ Define validations directly in DB as MySQL constraints and integrate them into y
651
745
 
652
746
  * Integration with ActiveRecord
653
747
 
748
+ **(2.2.1)** (23 May, 2015)
749
+
750
+ * Format validation
751
+
752
+ **(2.2.2)** (29 May, 2015)
753
+
754
+ * Made it possible to use several mv-* drivers in the same project
755
+
654
756
  ## Contributing
655
757
 
656
758
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
data/lib/mv-mysql.rb CHANGED
@@ -1,68 +1,2 @@
1
1
  require 'mv-core'
2
2
  require 'mv/mysql/railtie'
3
-
4
- require 'mv/mysql/constraint/builder/trigger'
5
-
6
- require 'mv/mysql/validation/exclusion'
7
- require 'mv/mysql/validation/inclusion'
8
- require 'mv/mysql/validation/length'
9
- require 'mv/mysql/validation/presence'
10
- require 'mv/mysql/validation/absence'
11
- require 'mv/mysql/validation/uniqueness'
12
- require 'mv/mysql/validation/format'
13
- require 'mv/mysql/validation/custom'
14
-
15
- require 'mv/mysql/validation/builder/trigger/exclusion'
16
- require 'mv/mysql/validation/builder/trigger/inclusion'
17
- require 'mv/mysql/validation/builder/trigger/length'
18
- require 'mv/mysql/validation/builder/trigger/presence'
19
- require 'mv/mysql/validation/builder/trigger/absence'
20
- require 'mv/mysql/validation/builder/trigger/uniqueness'
21
- require 'mv/mysql/validation/builder/trigger/format'
22
- require 'mv/mysql/validation/builder/trigger/custom'
23
-
24
- require 'mv/mysql/validation/active_model_presenter/format'
25
-
26
- ActiveSupport.on_load(:mv_core) do
27
-
28
- #constraint builders
29
- Mv::Core::Constraint::Builder::Factory.register_builders(
30
- Mv::Core::Constraint::Trigger => Mv::Mysql::Constraint::Builder::Trigger,
31
- )
32
-
33
- #validations
34
- Mv::Core::Validation::Factory.register_validations(
35
- :exclusion => Mv::Mysql::Validation::Exclusion,
36
- :inclusion => Mv::Mysql::Validation::Inclusion,
37
- :length => Mv::Mysql::Validation::Length,
38
- :presence => Mv::Mysql::Validation::Presence,
39
- :absence => Mv::Mysql::Validation::Absence,
40
- :uniqueness => Mv::Mysql::Validation::Uniqueness,
41
- :format => Mv::Mysql::Validation::Format,
42
- :custom => Mv::Mysql::Validation::Custom
43
- )
44
-
45
- # validation builders in trigger
46
- Mv::Mysql::Constraint::Builder::Trigger.validation_builders_factory.register_builders(
47
- Mv::Mysql::Validation::Exclusion => Mv::Mysql::Validation::Builder::Trigger::Exclusion,
48
- Mv::Mysql::Validation::Inclusion => Mv::Mysql::Validation::Builder::Trigger::Inclusion,
49
- Mv::Mysql::Validation::Length => Mv::Mysql::Validation::Builder::Trigger::Length,
50
- Mv::Mysql::Validation::Presence => Mv::Mysql::Validation::Builder::Trigger::Presence,
51
- Mv::Mysql::Validation::Absence => Mv::Mysql::Validation::Builder::Trigger::Absence,
52
- Mv::Mysql::Validation::Uniqueness => Mv::Mysql::Validation::Builder::Trigger::Uniqueness,
53
- Mv::Mysql::Validation::Format => Mv::Mysql::Validation::Builder::Trigger::Format,
54
- Mv::Mysql::Validation::Custom => Mv::Mysql::Validation::Builder::Trigger::Custom
55
- )
56
-
57
- #validation active model presenters
58
- Mv::Core::Validation::ActiveModelPresenter::Factory.register_presenters(
59
- Mv::Mysql::Validation::Exclusion => Mv::Core::Validation::ActiveModelPresenter::Exclusion,
60
- Mv::Mysql::Validation::Inclusion => Mv::Core::Validation::ActiveModelPresenter::Inclusion,
61
- Mv::Mysql::Validation::Length => Mv::Core::Validation::ActiveModelPresenter::Length,
62
- Mv::Mysql::Validation::Presence => Mv::Core::Validation::ActiveModelPresenter::Presence,
63
- Mv::Mysql::Validation::Absence => Mv::Core::Validation::ActiveModelPresenter::Absence,
64
- Mv::Mysql::Validation::Uniqueness => Mv::Core::Validation::ActiveModelPresenter::Uniqueness,
65
- Mv::Mysql::Validation::Format => Mv::Mysql::Validation::ActiveModelPresenter::Format
66
- )
67
- end
68
-
@@ -0,0 +1,65 @@
1
+ require 'mv/mysql/constraint/builder/trigger'
2
+
3
+ require 'mv/mysql/validation/exclusion'
4
+ require 'mv/mysql/validation/inclusion'
5
+ require 'mv/mysql/validation/length'
6
+ require 'mv/mysql/validation/presence'
7
+ require 'mv/mysql/validation/absence'
8
+ require 'mv/mysql/validation/uniqueness'
9
+ require 'mv/mysql/validation/format'
10
+ require 'mv/mysql/validation/custom'
11
+
12
+ require 'mv/mysql/validation/builder/trigger/exclusion'
13
+ require 'mv/mysql/validation/builder/trigger/inclusion'
14
+ require 'mv/mysql/validation/builder/trigger/length'
15
+ require 'mv/mysql/validation/builder/trigger/presence'
16
+ require 'mv/mysql/validation/builder/trigger/absence'
17
+ require 'mv/mysql/validation/builder/trigger/uniqueness'
18
+ require 'mv/mysql/validation/builder/trigger/format'
19
+ require 'mv/mysql/validation/builder/trigger/custom'
20
+
21
+ require 'mv/mysql/validation/active_model_presenter/format'
22
+
23
+ require 'mv/mysql/active_record/connection_adapters/mysql_adapter_decorator'
24
+
25
+ #constraint builders
26
+ Mv::Core::Constraint::Builder::Factory.register_builders(
27
+ Mv::Core::Constraint::Trigger => Mv::Mysql::Constraint::Builder::Trigger,
28
+ )
29
+
30
+ #validations
31
+ Mv::Core::Validation::Factory.register_validations(
32
+ :exclusion => Mv::Mysql::Validation::Exclusion,
33
+ :inclusion => Mv::Mysql::Validation::Inclusion,
34
+ :length => Mv::Mysql::Validation::Length,
35
+ :presence => Mv::Mysql::Validation::Presence,
36
+ :absence => Mv::Mysql::Validation::Absence,
37
+ :uniqueness => Mv::Mysql::Validation::Uniqueness,
38
+ :format => Mv::Mysql::Validation::Format,
39
+ :custom => Mv::Mysql::Validation::Custom
40
+ )
41
+
42
+ # validation builders in trigger
43
+ Mv::Mysql::Constraint::Builder::Trigger.validation_builders_factory.register_builders(
44
+ Mv::Mysql::Validation::Exclusion => Mv::Mysql::Validation::Builder::Trigger::Exclusion,
45
+ Mv::Mysql::Validation::Inclusion => Mv::Mysql::Validation::Builder::Trigger::Inclusion,
46
+ Mv::Mysql::Validation::Length => Mv::Mysql::Validation::Builder::Trigger::Length,
47
+ Mv::Mysql::Validation::Presence => Mv::Mysql::Validation::Builder::Trigger::Presence,
48
+ Mv::Mysql::Validation::Absence => Mv::Mysql::Validation::Builder::Trigger::Absence,
49
+ Mv::Mysql::Validation::Uniqueness => Mv::Mysql::Validation::Builder::Trigger::Uniqueness,
50
+ Mv::Mysql::Validation::Format => Mv::Mysql::Validation::Builder::Trigger::Format,
51
+ Mv::Mysql::Validation::Custom => Mv::Mysql::Validation::Builder::Trigger::Custom
52
+ )
53
+
54
+ #validation active model presenters
55
+ Mv::Core::Validation::ActiveModelPresenter::Factory.register_presenters(
56
+ Mv::Mysql::Validation::Exclusion => Mv::Core::Validation::ActiveModelPresenter::Exclusion,
57
+ Mv::Mysql::Validation::Inclusion => Mv::Core::Validation::ActiveModelPresenter::Inclusion,
58
+ Mv::Mysql::Validation::Length => Mv::Core::Validation::ActiveModelPresenter::Length,
59
+ Mv::Mysql::Validation::Presence => Mv::Core::Validation::ActiveModelPresenter::Presence,
60
+ Mv::Mysql::Validation::Absence => Mv::Core::Validation::ActiveModelPresenter::Absence,
61
+ Mv::Mysql::Validation::Uniqueness => Mv::Core::Validation::ActiveModelPresenter::Uniqueness,
62
+ Mv::Mysql::Validation::Format => Mv::Mysql::Validation::ActiveModelPresenter::Format
63
+ )
64
+
65
+ ::ActiveRecord::ConnectionAdapters::Mysql2Adapter.send(:prepend, Mv::Mysql::ActiveRecord::ConnectionAdapters::MysqlAdapterDecorator)
@@ -1,11 +1,12 @@
1
- require 'mv/mysql/active_record/connection_adapters/mysql_adapter_decorator'
2
-
3
1
  module Mv
4
2
  module Mysql
5
3
  class Railtie < ::Rails::Railtie
6
4
  initializer 'mv-mysql.initialization', after: 'active_record.initialize_database' do
7
- ::ActiveRecord::ConnectionAdapters::Mysql2Adapter.send(:prepend, Mv::Mysql::ActiveRecord::ConnectionAdapters::MysqlAdapterDecorator)
5
+ if defined?(::ActiveRecord::ConnectionAdapters::Mysql2Adapter) &&
6
+ ::ActiveRecord::Base.connection.is_a?(::ActiveRecord::ConnectionAdapters::Mysql2Adapter)
7
+ require 'mv/mysql/loader'
8
+ end
8
9
  end
9
10
  end
10
11
  end
11
- end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mv-mysql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valeriy Prokopchuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-23 00:00:00.000000000 Z
11
+ date: 2015-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -135,6 +135,7 @@ files:
135
135
  - lib/mv-mysql.rb
136
136
  - lib/mv/mysql/active_record/connection_adapters/mysql_adapter_decorator.rb
137
137
  - lib/mv/mysql/constraint/builder/trigger.rb
138
+ - lib/mv/mysql/loader.rb
138
139
  - lib/mv/mysql/railtie.rb
139
140
  - lib/mv/mysql/validation/absence.rb
140
141
  - lib/mv/mysql/validation/active_model_presenter/format.rb