rein 0.2.1 → 0.3.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.
@@ -3,9 +3,10 @@ module RC
3
3
  def add_foreign_key_constraint(referencing_table, referenced_table, options = {})
4
4
  referencing_attribute = options[:referencing] || "#{referenced_table.to_s.singularize}_id".to_sym
5
5
  referenced_attribute = "id".to_sym
6
- constraint_name = options[:name] || "#{referencing_attribute}_fk".to_sym
7
6
 
8
- sql = "ALTER TABLE #{referencing_table} ADD CONSTRAINT #{constraint_name} FOREIGN KEY (#{referencing_attribute}) REFERENCES #{referenced_table} (#{referenced_attribute})"
7
+ name = options[:name] || "#{referencing_attribute}_fk".to_sym
8
+
9
+ sql = "ALTER TABLE #{referencing_table} ADD CONSTRAINT #{name} FOREIGN KEY (#{referencing_attribute}) REFERENCES #{referenced_table} (#{referenced_attribute})"
9
10
  sql << " ON DELETE #{referential_action(options[:on_delete])}" if options[:on_delete]
10
11
  sql << " ON UPDATE #{referential_action(options[:on_update])}" if options[:on_update]
11
12
 
@@ -0,0 +1,11 @@
1
+ module RC
2
+ module Inclusion
3
+ def add_inclusion_constraint(table, attribute, options = {})
4
+ name = "#{table}_#{attribute}"
5
+ values = options[:in].map {|x| "'#{x}'" }.join(", ")
6
+ conditions = "#{attribute} IN (#{values})"
7
+
8
+ execute("ALTER TABLE #{table} ADD CONSTRAINT #{name} CHECK (#{conditions})")
9
+ end
10
+ end
11
+ end
@@ -9,14 +9,14 @@ module RC
9
9
  }.freeze
10
10
 
11
11
  def add_numericality_constraint(table, attribute, options = {})
12
+ name = "#{table}_#{attribute}"
13
+
12
14
  conditions = OPERATORS.slice(*options.keys).map do |key, operator|
13
15
  value = options[key]
14
16
  [attribute, operator, value].join(" ")
15
- end
16
-
17
- conditions = conditions.join(" AND ")
17
+ end.join(" AND ")
18
18
 
19
- execute "ALTER TABLE #{table} ADD CONSTRAINT #{attribute} CHECK (#{conditions})"
19
+ execute("ALTER TABLE #{table} ADD CONSTRAINT #{name} CHECK (#{conditions})")
20
20
  end
21
21
  end
22
22
  end
data/lib/rein/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rein
2
- VERSION = "0.2.1" unless defined?(Rein::VERSION)
2
+ VERSION = "0.3.0" unless defined?(Rein::VERSION)
3
3
  end
data/lib/rein.rb CHANGED
@@ -8,6 +8,7 @@ end
8
8
  RC = Rein::Constraint
9
9
 
10
10
  require 'rein/constraint/foreign_key'
11
+ require 'rein/constraint/inclusion'
11
12
  require 'rein/constraint/numericality'
12
13
  require 'rein/version'
13
14
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
8
- - 1
9
- version: 0.2.1
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Josh Bassett
@@ -19,7 +19,6 @@ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: activesupport
22
- prerelease: false
23
22
  requirement: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
25
24
  requirements:
@@ -32,7 +31,113 @@ dependencies:
32
31
  - rc
33
32
  version: 3.0.0.rc
34
33
  type: :runtime
34
+ prerelease: false
35
35
  version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 1
45
+ - 0
46
+ - 0
47
+ version: 1.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: hirb
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 0
60
+ - 3
61
+ - 2
62
+ version: 0.3.2
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: rake
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 0
75
+ - 8
76
+ - 7
77
+ version: 0.8.7
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: rcov
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ segments:
89
+ - 0
90
+ - 9
91
+ - 8
92
+ version: 0.9.8
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: *id005
96
+ - !ruby/object:Gem::Dependency
97
+ name: rspec
98
+ requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ segments:
104
+ - 1
105
+ - 3
106
+ - 0
107
+ version: 1.3.0
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: *id006
111
+ - !ruby/object:Gem::Dependency
112
+ name: rr
113
+ requirement: &id007 !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ segments:
119
+ - 1
120
+ - 0
121
+ - 0
122
+ version: 1.0.0
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: *id007
126
+ - !ruby/object:Gem::Dependency
127
+ name: wirble
128
+ requirement: &id008 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ segments:
134
+ - 0
135
+ - 1
136
+ - 3
137
+ version: 0.1.3
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: *id008
36
141
  description: Rein adds bunch of methods to your ActiveRecord migrations so you can easily tame your database.
37
142
  email: josh.bassett@gmail.com
38
143
  executables: []
@@ -44,6 +149,7 @@ extra_rdoc_files: []
44
149
  files:
45
150
  - lib/rein/alone.rb
46
151
  - lib/rein/constraint/foreign_key.rb
152
+ - lib/rein/constraint/inclusion.rb
47
153
  - lib/rein/constraint/numericality.rb
48
154
  - lib/rein/version.rb
49
155
  - lib/rein.rb
@@ -63,6 +169,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
63
169
  requirements:
64
170
  - - ">="
65
171
  - !ruby/object:Gem::Version
172
+ hash: 1515412698680743757
66
173
  segments:
67
174
  - 0
68
175
  version: "0"