mv-core 1.0.1 → 2.0.0
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 +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
|