mv-core 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +67 -12
- data/lib/mv-core.rb +18 -100
- data/lib/mv/core/active_record/connection_adapters/abstract_adapter_decorator.rb +51 -0
- data/lib/mv/core/active_record/connection_adapters/table_decorator.rb +13 -0
- data/lib/mv/core/active_record/connection_adapters/table_definition_decorator.rb +21 -0
- data/lib/mv/core/active_record/migration/command_recorder_decorator.rb +13 -0
- data/lib/mv/core/active_record/migration_decorator.rb +14 -0
- data/lib/mv/core/active_record/schema_decorator.rb +16 -0
- data/lib/mv/core/active_record/schema_dumper_decorator.rb +29 -0
- data/lib/mv/core/constraint/base.rb +33 -0
- data/lib/mv/core/constraint/builder/base.rb +45 -0
- data/lib/mv/core/constraint/builder/factory.rb +42 -0
- data/lib/mv/core/constraint/builder/index.rb +50 -0
- data/lib/mv/core/constraint/builder/trigger.rb +13 -0
- data/lib/mv/core/constraint/description.rb +24 -0
- data/lib/mv/core/constraint/factory.rb +33 -0
- data/lib/mv/core/constraint/index.rb +13 -0
- data/lib/mv/core/constraint/trigger.rb +20 -0
- data/lib/mv/core/db/helpers/column_validators.rb +57 -0
- data/lib/mv/core/db/helpers/table_validators.rb +38 -0
- data/lib/mv/core/db/migration_validator.rb +26 -0
- data/lib/mv/core/error.rb +25 -0
- data/lib/mv/core/migration/base.rb +94 -0
- data/lib/mv/core/migration/operations/add_column.rb +27 -0
- data/lib/mv/core/migration/operations/change_column.rb +31 -0
- data/lib/mv/core/migration/operations/drop_table.rb +21 -0
- data/lib/mv/core/migration/operations/factory.rb +20 -0
- data/lib/mv/core/migration/operations/list.rb +28 -0
- data/lib/mv/core/migration/operations/remove_column.rb +22 -0
- data/lib/mv/core/migration/operations/rename_column.rb +26 -0
- data/lib/mv/core/migration/operations/rename_table.rb +25 -0
- data/lib/mv/core/presenter/constraint/description.rb +26 -0
- data/lib/mv/core/presenter/validation/base.rb +73 -0
- data/lib/mv/core/railtie.rb +40 -0
- data/lib/mv/core/route/base.rb +25 -0
- data/lib/mv/core/route/index.rb +17 -0
- data/lib/mv/core/route/trigger.rb +22 -0
- data/lib/mv/core/router.rb +33 -0
- data/lib/mv/core/services/compare_constraint_arrays.rb +50 -0
- data/lib/mv/core/services/compare_constraints.rb +31 -0
- data/lib/mv/core/services/create_constraints.rb +30 -0
- data/lib/mv/core/services/create_migration_validators_table.rb +31 -0
- data/lib/mv/core/services/delete_constraints.rb +30 -0
- data/lib/mv/core/services/load_constraints.rb +45 -0
- data/lib/mv/core/services/say_constraints_diff.rb +66 -0
- data/lib/mv/core/services/show_constraints.rb +41 -0
- data/lib/mv/core/services/synchronize_constraints.rb +54 -0
- data/lib/mv/core/services/uninstall.rb +25 -0
- data/lib/mv/core/validation/absence.rb +35 -0
- data/lib/mv/core/validation/base.rb +98 -0
- data/lib/mv/core/validation/builder/absence.rb +19 -0
- data/lib/mv/core/validation/builder/base.rb +58 -0
- data/lib/mv/core/validation/builder/exclusion.rb +42 -0
- data/lib/mv/core/validation/builder/factory.rb +43 -0
- data/lib/mv/core/validation/builder/inclusion.rb +42 -0
- data/lib/mv/core/validation/builder/length.rb +68 -0
- data/lib/mv/core/validation/builder/presence.rb +19 -0
- data/lib/mv/core/validation/builder/uniqueness.rb +19 -0
- data/lib/mv/core/validation/exclusion.rb +27 -0
- data/lib/mv/core/validation/factory.rb +56 -0
- data/lib/mv/core/validation/inclusion.rb +27 -0
- data/lib/mv/core/validation/length.rb +59 -0
- data/lib/mv/core/validation/presence.rb +25 -0
- data/lib/mv/core/validation/uniqueness.rb +45 -0
- data/lib/mv/core/validators/array_validator.rb +5 -0
- data/lib/mv/core/validators/integers_array_validator.rb +12 -0
- data/lib/mv/core/validators/valid_validator.rb +9 -0
- metadata +158 -30
- data/lib/migration_validators/active_record/base.rb +0 -29
- data/lib/migration_validators/active_record/connection_adapters/abstract_adapter.rb +0 -38
- data/lib/migration_validators/active_record/connection_adapters/native_adapter.rb +0 -129
- data/lib/migration_validators/active_record/connection_adapters/table.rb +0 -17
- data/lib/migration_validators/active_record/connection_adapters/table_definition.rb +0 -33
- data/lib/migration_validators/active_record/migration.rb +0 -25
- data/lib/migration_validators/active_record/schema.rb +0 -32
- data/lib/migration_validators/active_record/schema_dumper.rb +0 -25
- data/lib/migration_validators/adapters/base.rb +0 -15
- data/lib/migration_validators/adapters/containers.rb +0 -100
- data/lib/migration_validators/adapters/routing.rb +0 -102
- data/lib/migration_validators/adapters/syntax.rb +0 -51
- data/lib/migration_validators/adapters/validator_definitions.rb +0 -132
- data/lib/migration_validators/core/adapter_wrapper.rb +0 -88
- data/lib/migration_validators/core/db_validator.rb +0 -131
- data/lib/migration_validators/core/statement_builder.rb +0 -61
- data/lib/migration_validators/core/validator_constraints_list.rb +0 -32
- data/lib/migration_validators/core/validator_container.rb +0 -110
- data/lib/migration_validators/core/validator_definition.rb +0 -91
- data/lib/migration_validators/core/validator_router.rb +0 -45
- data/lib/options.rb +0 -7
@@ -1,29 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module Base
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
class_eval do
|
8
|
-
class << self
|
9
|
-
alias_method_chain :establish_connection, :validators
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module ClassMethods
|
15
|
-
def establish_connection_with_validators *args
|
16
|
-
establish_connection_without_validators *args
|
17
|
-
|
18
|
-
connection.class.class_eval {
|
19
|
-
include MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter
|
20
|
-
} unless connection.class.include?(MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter)
|
21
|
-
|
22
|
-
connection.class.class_eval {
|
23
|
-
include MigrationValidators::ActiveRecord::ConnectionAdapters::AbstractAdapter
|
24
|
-
} unless connection.class.include?(MigrationValidators::ActiveRecord::ConnectionAdapters::AbstractAdapter)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module ConnectionAdapters
|
4
|
-
module AbstractAdapter
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
class_eval do
|
9
|
-
alias_method_chain :initialize_schema_migrations_table, :validators
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize_migration_validators_table
|
14
|
-
migrations_table = MigrationValidators.migration_validators_table_name
|
15
|
-
|
16
|
-
unless table_exists?(migrations_table)
|
17
|
-
create_table migrations_table do |t|
|
18
|
-
t.string :table_name, :null => false, :limit => 255
|
19
|
-
t.string :column_name, :null => true, :limit => 255
|
20
|
-
t.string :validator_name, :null => false, :limit => 255
|
21
|
-
t.text :options#, default: {}.to_yaml
|
22
|
-
t.text :constraints#, default: [].to_yaml
|
23
|
-
end
|
24
|
-
|
25
|
-
add_index migrations_table, :table_name
|
26
|
-
add_index migrations_table, [:table_name, :column_name], :name => 'mg_vld_tbl_clm'
|
27
|
-
add_index migrations_table, [:table_name, :column_name, :validator_name], :name => 'mg_vld_tbl_clm_vldn', :unique => true
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def initialize_schema_migrations_table_with_validators
|
32
|
-
initialize_schema_migrations_table_without_validators
|
33
|
-
initialize_migration_validators_table
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
# DbValidator = MigrationValidators::Core::DbValidator
|
2
|
-
|
3
|
-
module MigrationValidators
|
4
|
-
module ActiveRecord
|
5
|
-
module ConnectionAdapters
|
6
|
-
module NativeAdapter
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
class_eval do
|
11
|
-
alias_method_chain :drop_table, :validators
|
12
|
-
alias_method_chain :remove_column, :validators
|
13
|
-
alias_method_chain :rename_column, :validators
|
14
|
-
alias_method_chain :change_column, :validators
|
15
|
-
alias_method_chain :add_column, :validators
|
16
|
-
alias_method_chain :rename_table, :validators
|
17
|
-
alias_method_chain :create_table, :validators
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def validate_column table_name, column_name, opts
|
22
|
-
table_name = table_name || @context_table_name
|
23
|
-
raise MigrationValidatorsException.new("at least one column validator should be defined") if opts.blank?
|
24
|
-
|
25
|
-
|
26
|
-
opts.each do |validator_name, validator_options|
|
27
|
-
if validator_options.blank?
|
28
|
-
raise MigrationValidatorsException.new("use false to remove column validator") unless validator_options == false
|
29
|
-
|
30
|
-
MigrationValidators::Core::DbValidator.on_table(table_name)
|
31
|
-
.on_column(column_name)
|
32
|
-
.with_name(validator_name)
|
33
|
-
.delayed_destroy
|
34
|
-
else
|
35
|
-
validator_options = {} if validator_options == true
|
36
|
-
MigrationValidators::Core::DbValidator.new(table_name: table_name,
|
37
|
-
column_name: column_name,
|
38
|
-
validator_name: validator_name,
|
39
|
-
options: validator_options).delayed_save
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def in_context_of_table table_name
|
45
|
-
@context_table_name = table_name
|
46
|
-
res = yield if block_given?
|
47
|
-
@context_table_name = nil
|
48
|
-
res
|
49
|
-
end
|
50
|
-
|
51
|
-
def do_internally
|
52
|
-
disable_migration_validators
|
53
|
-
yield
|
54
|
-
enable_migration_validators
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
def disable_migration_validators
|
60
|
-
@migration_validators_call_stack = [0, @migration_validators_call_stack ||= 0].max + 1
|
61
|
-
end
|
62
|
-
|
63
|
-
def enable_migration_validators
|
64
|
-
@migration_validators_call_stack = [0, @migration_validators_call_stack ||= 0].max - 1
|
65
|
-
end
|
66
|
-
|
67
|
-
def migration_validators_enabled
|
68
|
-
(@migration_validators_call_stack ||= 0) <= 0
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
def do_enabled
|
73
|
-
yield if migration_validators_enabled
|
74
|
-
end
|
75
|
-
|
76
|
-
|
77
|
-
def drop_table_with_validators table_name
|
78
|
-
do_enabled { MigrationValidators::Core::DbValidator.on_table(table_name).delayed_destroy }
|
79
|
-
do_internally { drop_table_without_validators table_name }
|
80
|
-
end
|
81
|
-
|
82
|
-
def remove_column_with_validators table_name, *column_names
|
83
|
-
do_enabled do
|
84
|
-
column_names.flatten.each do |column_name|
|
85
|
-
# MigrationValidators::Core::DbValidator.remove_column_validators table_name, column_name
|
86
|
-
MigrationValidators::Core::DbValidator.on_table(table_name).on_column(column_name).delayed_destroy
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
do_internally { remove_column_without_validators table_name, *column_names }
|
91
|
-
end
|
92
|
-
|
93
|
-
def rename_column_with_validators table_name, old_column_name, new_column_name
|
94
|
-
do_enabled { MigrationValidators::Core::DbValidator.rename_column table_name, old_column_name, new_column_name }
|
95
|
-
do_internally { rename_column_without_validators table_name, old_column_name, new_column_name }
|
96
|
-
end
|
97
|
-
|
98
|
-
def add_column_with_validators table_name, column_name, type, opts
|
99
|
-
validates = opts.delete(:validates)
|
100
|
-
|
101
|
-
do_internally { add_column_without_validators table_name, column_name, type, opts }
|
102
|
-
|
103
|
-
do_enabled { validate_column(table_name, column_name, validates) } unless validates.blank?
|
104
|
-
end
|
105
|
-
|
106
|
-
def rename_table_with_validators old_table_name, new_table_name
|
107
|
-
do_enabled { MigrationValidators::Core::DbValidator.rename_table old_table_name, new_table_name }
|
108
|
-
do_internally { rename_table_without_validators old_table_name, new_table_name }
|
109
|
-
end
|
110
|
-
|
111
|
-
def change_column_with_validators table_name, column_name, type, opts
|
112
|
-
validates = opts.delete(:validates)
|
113
|
-
|
114
|
-
do_enabled { MigrationValidators::Core::DbValidator.on_table(table_name).on_column(column_name).delayed_destroy }
|
115
|
-
|
116
|
-
do_internally { change_column_without_validators table_name, column_name, type, opts }
|
117
|
-
|
118
|
-
do_enabled { validate_column(table_name, column_name, validates) } unless validates.blank?
|
119
|
-
end
|
120
|
-
|
121
|
-
def create_table_with_validators table_name, *args, &block
|
122
|
-
in_context_of_table table_name do
|
123
|
-
create_table_without_validators table_name, *args, &block
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module ConnectionAdapters
|
4
|
-
module Table
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
class_eval do
|
9
|
-
def change_validates column_name, opts
|
10
|
-
::ActiveRecord::Base.connection.validate_column(@table_name, column_name, opts) unless opts.blank?
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module ConnectionAdapters
|
4
|
-
module TableDefinition
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
class_eval do
|
9
|
-
alias_method_chain :column, :validators
|
10
|
-
|
11
|
-
def change_validates *args
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def column_with_validators name, type, options = {}
|
17
|
-
validates = options.delete(:validates)
|
18
|
-
|
19
|
-
column_without_validators name, type, options
|
20
|
-
|
21
|
-
#ugly patch
|
22
|
-
connection = ::ActiveRecord::Base.connection
|
23
|
-
|
24
|
-
connection.class.class_eval {
|
25
|
-
include MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter
|
26
|
-
} unless connection.class.include?(MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter)
|
27
|
-
|
28
|
-
connection.validate_column(nil, name, validates) unless validates.blank?
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module Migration
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
class_eval do
|
8
|
-
alias_method_chain :exec_migration, :validators
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def exec_migration_with_validators *args
|
13
|
-
connection.class.class_eval {
|
14
|
-
include MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter
|
15
|
-
} unless connection.class.include?(MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter)
|
16
|
-
|
17
|
-
connection.initialize_migration_validators_table
|
18
|
-
|
19
|
-
exec_migration_without_validators *args
|
20
|
-
|
21
|
-
MigrationValidators::Core::DbValidator.commit MigrationValidators.validator
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module Schema
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
class_eval do
|
8
|
-
class << self
|
9
|
-
alias_method_chain :define, :validators
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module ClassMethods
|
15
|
-
def define_with_validators *args, &block
|
16
|
-
|
17
|
-
connection.class.class_eval {
|
18
|
-
include MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter
|
19
|
-
} unless connection.class.include?(MigrationValidators::ActiveRecord::ConnectionAdapters::NativeAdapter)
|
20
|
-
|
21
|
-
connection.initialize_migration_validators_table
|
22
|
-
|
23
|
-
res = define_without_validators *args, &block
|
24
|
-
|
25
|
-
MigrationValidators::Core::DbValidator.commit MigrationValidators.validator
|
26
|
-
|
27
|
-
res
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module ActiveRecord
|
3
|
-
module SchemaDumper
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
class_eval do
|
8
|
-
alias_method_chain :tables, :validators
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def tables_with_validators(stream)
|
13
|
-
tables_without_validators(stream)
|
14
|
-
|
15
|
-
@connection.initialize_migration_validators_table
|
16
|
-
|
17
|
-
stream.puts ""
|
18
|
-
stream.puts " #Validators"
|
19
|
-
MigrationValidators::Core::DbValidator.order([:table_name, :column_name]).each do |validator|
|
20
|
-
stream.puts " validate_column :#{validator.table_name}, :#{validator.column_name}, :#{validator.validator_name} => #{validator.options.inspect}"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__)) + '/syntax'
|
2
|
-
require File.expand_path(File.dirname(__FILE__)) + '/validator_definitions'
|
3
|
-
require File.expand_path(File.dirname(__FILE__)) + '/containers'
|
4
|
-
require File.expand_path(File.dirname(__FILE__)) + '/routing'
|
5
|
-
|
6
|
-
module MigrationValidators
|
7
|
-
module Adapters
|
8
|
-
class Base
|
9
|
-
include MigrationValidators::Adapters::Syntax
|
10
|
-
include MigrationValidators::Adapters::ValidatorDefinitions
|
11
|
-
include MigrationValidators::Adapters::Containers
|
12
|
-
include MigrationValidators::Adapters::Routing
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,100 +0,0 @@
|
|
1
|
-
module MigrationValidators
|
2
|
-
module Adapters
|
3
|
-
module Containers
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
module ClassMethods
|
7
|
-
def containers
|
8
|
-
@containers ||= {}
|
9
|
-
end
|
10
|
-
|
11
|
-
def container name, &block
|
12
|
-
raise "Container name is not defined" if name.blank?
|
13
|
-
|
14
|
-
container = containers[name] ||= MigrationValidators::Core::ValidatorContainer.new(name, validators, syntax)
|
15
|
-
container.instance_eval(&block) if block
|
16
|
-
container
|
17
|
-
end
|
18
|
-
|
19
|
-
def define_base_containers
|
20
|
-
container :insert_trigger do
|
21
|
-
group do |validator|
|
22
|
-
[validator.table_name, (validator.options && validator.options[:insert_trigger_name]) || "trg_mgr_validates_#{validator.table_name}_ins"]
|
23
|
-
end
|
24
|
-
|
25
|
-
constraint_name do |group_name|
|
26
|
-
group_name.last
|
27
|
-
end
|
28
|
-
|
29
|
-
operation :create do |stmt, trigger_name, group_name|
|
30
|
-
["CREATE TRIGGER #{trigger_name} BEFORE INSERT ON #{group_name.first} FOR EACH ROW",
|
31
|
-
"BEGIN",
|
32
|
-
"#{stmt}; ",
|
33
|
-
"END;"].join(' ')
|
34
|
-
end
|
35
|
-
|
36
|
-
operation :drop do |stmt, trigger_name, group_name|
|
37
|
-
"DROP TRIGGER IF EXISTS #{trigger_name};"
|
38
|
-
end
|
39
|
-
|
40
|
-
operation :join do |stmt, value|
|
41
|
-
[stmt, value].delete_if(&:blank?).join(";\n")
|
42
|
-
end
|
43
|
-
|
44
|
-
operation :db_name do |value|
|
45
|
-
"NEW.#{value}"
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
container :update_trigger do
|
51
|
-
group do |validator|
|
52
|
-
[validator.table_name, (validator.options && validator.options[:update_trigger_name]) || "trg_mgr_validates_#{validator.table_name}_upd"]
|
53
|
-
end
|
54
|
-
|
55
|
-
constraint_name do |group_name|
|
56
|
-
group_name.last
|
57
|
-
end
|
58
|
-
|
59
|
-
operation :create do |stmt, trigger_name, group_name|
|
60
|
-
["CREATE TRIGGER #{trigger_name} BEFORE UPDATE ON #{group_name.first} FOR EACH ROW",
|
61
|
-
"BEGIN",
|
62
|
-
"#{stmt}; ",
|
63
|
-
"END;"].join(' ')
|
64
|
-
end
|
65
|
-
|
66
|
-
operation :drop do |stmt, trigger_name, group_name|
|
67
|
-
"DROP TRIGGER IF EXISTS #{trigger_name};"
|
68
|
-
end
|
69
|
-
|
70
|
-
operation :join do |stmt, value|
|
71
|
-
[stmt, value].delete_if(&:blank?).join(";\n")
|
72
|
-
end
|
73
|
-
|
74
|
-
operation :db_name do |value|
|
75
|
-
"NEW.#{value}"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
container :check do
|
80
|
-
group do |validator|
|
81
|
-
[validator.table_name, (validator.options && validator.options[:check_name]) || "chk_#{validator.table_name}_#{validator.column_name}"]
|
82
|
-
end
|
83
|
-
|
84
|
-
constraint_name do |group_name|
|
85
|
-
group_name.last
|
86
|
-
end
|
87
|
-
|
88
|
-
operation :create do |stmt, check_name, group_name|
|
89
|
-
"ALTER TABLE #{group_name.first} ADD CONSTRAINT #{check_name} CHECK(#{stmt});"
|
90
|
-
end
|
91
|
-
|
92
|
-
operation :drop do |stmt, check_name, group_name|
|
93
|
-
"ALTER TABLE #{group_name.first} DROP CONSTRAINT #{check_name};"
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|