composite_primary_keys 12.0.0.rc5 → 12.0.4
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/History.rdoc +41 -3
- data/README.rdoc +3 -2
- data/lib/composite_primary_keys.rb +57 -57
- data/lib/composite_primary_keys/active_model/attribute_assignment.rb +19 -0
- data/lib/composite_primary_keys/arel/sqlserver.rb +1 -3
- data/lib/composite_primary_keys/associations/through_association.rb +2 -1
- data/lib/composite_primary_keys/attribute_methods.rb +2 -2
- data/lib/composite_primary_keys/attribute_methods/primary_key.rb +13 -0
- data/lib/composite_primary_keys/base.rb +12 -1
- data/lib/composite_primary_keys/composite_arrays.rb +49 -14
- data/lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb +8 -3
- data/lib/composite_primary_keys/connection_adapters/abstract_adapter.rb +1 -1
- data/lib/composite_primary_keys/connection_adapters/mysql/database_statements.rb +24 -0
- data/lib/composite_primary_keys/connection_adapters/sqlserver/database_statements.rb +30 -12
- data/lib/composite_primary_keys/core.rb +1 -1
- data/lib/composite_primary_keys/persistence.rb +2 -2
- data/lib/composite_primary_keys/relation.rb +108 -15
- data/lib/composite_primary_keys/relation/calculations.rb +5 -0
- data/lib/composite_primary_keys/relation/finder_methods.rb +8 -8
- data/lib/composite_primary_keys/relation/predicate_builder/association_query_value.rb +1 -1
- data/lib/composite_primary_keys/validations/uniqueness.rb +1 -1
- data/lib/composite_primary_keys/version.rb +2 -2
- data/test/abstract_unit.rb +4 -6
- data/test/fixtures/article.rb +4 -0
- data/test/fixtures/articles.yml +4 -3
- data/test/fixtures/comment.rb +1 -3
- data/test/fixtures/comments.yml +10 -9
- data/test/fixtures/db_definitions/db2-create-tables.sql +0 -14
- data/test/fixtures/db_definitions/db2-drop-tables.sql +1 -3
- data/test/fixtures/db_definitions/mysql.sql +7 -44
- data/test/fixtures/db_definitions/oracle.drop.sql +3 -9
- data/test/fixtures/db_definitions/oracle.sql +12 -48
- data/test/fixtures/db_definitions/postgresql.sql +7 -44
- data/test/fixtures/db_definitions/sqlite.sql +6 -42
- data/test/fixtures/db_definitions/sqlserver.sql +5 -41
- data/test/fixtures/department.rb +8 -3
- data/test/fixtures/departments.yml +4 -4
- data/test/fixtures/readings.yml +2 -2
- data/test/fixtures/restaurants_suburbs.yml +1 -1
- data/test/fixtures/streets.yml +2 -2
- data/test/fixtures/suburbs.yml +2 -2
- data/test/fixtures/user.rb +3 -2
- data/test/test_associations.rb +30 -23
- data/test/test_composite_arrays.rb +14 -0
- data/test/test_create.rb +15 -18
- data/test/test_delete.rb +3 -3
- data/test/test_exists.rb +5 -5
- data/test/test_find.rb +22 -2
- data/test/test_habtm.rb +2 -2
- data/test/test_ids.rb +5 -6
- data/test/test_nested_attributes.rb +0 -57
- data/test/test_polymorphic.rb +29 -13
- data/test/test_preload.rb +4 -3
- data/test/test_serialize.rb +2 -2
- data/test/test_update.rb +19 -1
- metadata +10 -70
- data/test/db_test.rb +0 -53
- data/test/fixtures/hack.rb +0 -5
- data/test/fixtures/hacks.yml +0 -3
- data/test/fixtures/pk_called_id.rb +0 -5
- data/test/fixtures/pk_called_ids.yml +0 -11
- data/test/fixtures/reference_code_using_composite_key_alias.rb +0 -8
- data/test/fixtures/reference_code_using_simple_key_alias.rb +0 -8
- data/test/fixtures/seat.rb +0 -5
- data/test/fixtures/seats.yml +0 -9
- data/test/fixtures/topic.rb +0 -6
- data/test/fixtures/topic_source.rb +0 -7
- data/test/setup.rb +0 -51
- data/test/test_aliases.rb +0 -18
- data/test/test_enum.rb +0 -21
- data/test/test_suite.rb +0 -35
data/test/test_serialize.rb
CHANGED
@@ -5,11 +5,11 @@ class TestSerialization < ActiveSupport::TestCase
|
|
5
5
|
|
6
6
|
def test_json
|
7
7
|
department = Department.first
|
8
|
-
assert_equal('{"
|
8
|
+
assert_equal('{"id":1,"location_id":1}', department.to_json)
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_serializable_hash
|
12
12
|
department = Department.first
|
13
|
-
assert_equal({"
|
13
|
+
assert_equal({"id" => 1,"location_id" => 1}, department.serializable_hash)
|
14
14
|
end
|
15
15
|
end
|
data/test/test_update.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../abstract_unit', __FILE__)
|
2
2
|
|
3
3
|
class TestUpdate < ActiveSupport::TestCase
|
4
|
-
fixtures :reference_types, :reference_codes
|
4
|
+
fixtures :departments, :reference_types, :reference_codes, :rooms, :room_assignments
|
5
5
|
|
6
6
|
CLASSES = {
|
7
7
|
:single => {
|
@@ -36,6 +36,13 @@ class TestUpdate < ActiveSupport::TestCase
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
def test_update_attributes_with_id_field
|
40
|
+
department = departments(:accounting)
|
41
|
+
department.update_attribute(:location_id, 3)
|
42
|
+
department.reload
|
43
|
+
assert_equal(3, department.location_id)
|
44
|
+
end
|
45
|
+
|
39
46
|
def test_update_primary_key
|
40
47
|
obj = ReferenceCode.find([1,1])
|
41
48
|
obj.reference_type_id = 2
|
@@ -76,4 +83,15 @@ class TestUpdate < ActiveSupport::TestCase
|
|
76
83
|
|
77
84
|
assert_equal(2, query.count)
|
78
85
|
end
|
86
|
+
|
87
|
+
def test_update_with_uniqueness
|
88
|
+
assignment = room_assignments(:jacksons_room)
|
89
|
+
room_1 = rooms(:branner_room_1)
|
90
|
+
room_2 = rooms(:branner_room_3)
|
91
|
+
|
92
|
+
assert_equal(room_1, assignment.room)
|
93
|
+
assignment.room = room_2
|
94
|
+
assignment.save!
|
95
|
+
assert_equal(room_2, assignment.room)
|
96
|
+
end
|
79
97
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: composite_primary_keys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.0.
|
4
|
+
version: 12.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charlie Savage
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.0.0
|
19
|
+
version: 6.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.0.0
|
26
|
+
version: 6.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,48 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: mysql2
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: sqlite3
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: pg
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
41
|
description: Composite key support for ActiveRecord
|
84
42
|
email:
|
85
43
|
executables: []
|
@@ -90,6 +48,7 @@ files:
|
|
90
48
|
- README.rdoc
|
91
49
|
- Rakefile
|
92
50
|
- lib/composite_primary_keys.rb
|
51
|
+
- lib/composite_primary_keys/active_model/attribute_assignment.rb
|
93
52
|
- lib/composite_primary_keys/arel/sqlserver.rb
|
94
53
|
- lib/composite_primary_keys/arel/to_sql.rb
|
95
54
|
- lib/composite_primary_keys/associations/association.rb
|
@@ -112,6 +71,7 @@ files:
|
|
112
71
|
- lib/composite_primary_keys/composite_relation.rb
|
113
72
|
- lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb
|
114
73
|
- lib/composite_primary_keys/connection_adapters/abstract_adapter.rb
|
74
|
+
- lib/composite_primary_keys/connection_adapters/mysql/database_statements.rb
|
115
75
|
- lib/composite_primary_keys/connection_adapters/postgresql/database_statements.rb
|
116
76
|
- lib/composite_primary_keys/connection_adapters/sqlserver/database_statements.rb
|
117
77
|
- lib/composite_primary_keys/core.rb
|
@@ -146,7 +106,6 @@ files:
|
|
146
106
|
- test/connections/databases.ci.yml
|
147
107
|
- test/connections/databases.example.yml
|
148
108
|
- test/connections/databases.yml
|
149
|
-
- test/db_test.rb
|
150
109
|
- test/fixtures/article.rb
|
151
110
|
- test/fixtures/articles.yml
|
152
111
|
- test/fixtures/capitol.rb
|
@@ -169,14 +128,10 @@ files:
|
|
169
128
|
- test/fixtures/employees.yml
|
170
129
|
- test/fixtures/group.rb
|
171
130
|
- test/fixtures/groups.yml
|
172
|
-
- test/fixtures/hack.rb
|
173
|
-
- test/fixtures/hacks.yml
|
174
131
|
- test/fixtures/membership.rb
|
175
132
|
- test/fixtures/membership_status.rb
|
176
133
|
- test/fixtures/membership_statuses.yml
|
177
134
|
- test/fixtures/memberships.yml
|
178
|
-
- test/fixtures/pk_called_id.rb
|
179
|
-
- test/fixtures/pk_called_ids.yml
|
180
135
|
- test/fixtures/product.rb
|
181
136
|
- test/fixtures/product_tariff.rb
|
182
137
|
- test/fixtures/product_tariffs.yml
|
@@ -184,8 +139,6 @@ files:
|
|
184
139
|
- test/fixtures/reading.rb
|
185
140
|
- test/fixtures/readings.yml
|
186
141
|
- test/fixtures/reference_code.rb
|
187
|
-
- test/fixtures/reference_code_using_composite_key_alias.rb
|
188
|
-
- test/fixtures/reference_code_using_simple_key_alias.rb
|
189
142
|
- test/fixtures/reference_codes.yml
|
190
143
|
- test/fixtures/reference_type.rb
|
191
144
|
- test/fixtures/reference_types.yml
|
@@ -201,8 +154,6 @@ files:
|
|
201
154
|
- test/fixtures/room_attribute_assignments.yml
|
202
155
|
- test/fixtures/room_attributes.yml
|
203
156
|
- test/fixtures/rooms.yml
|
204
|
-
- test/fixtures/seat.rb
|
205
|
-
- test/fixtures/seats.yml
|
206
157
|
- test/fixtures/street.rb
|
207
158
|
- test/fixtures/streets.yml
|
208
159
|
- test/fixtures/student.rb
|
@@ -211,16 +162,12 @@ files:
|
|
211
162
|
- test/fixtures/suburbs.yml
|
212
163
|
- test/fixtures/tariff.rb
|
213
164
|
- test/fixtures/tariffs.yml
|
214
|
-
- test/fixtures/topic.rb
|
215
|
-
- test/fixtures/topic_source.rb
|
216
165
|
- test/fixtures/topic_sources.yml
|
217
166
|
- test/fixtures/topics.yml
|
218
167
|
- test/fixtures/user.rb
|
219
168
|
- test/fixtures/users.yml
|
220
169
|
- test/plugins/pagination.rb
|
221
170
|
- test/plugins/pagination_helper.rb
|
222
|
-
- test/setup.rb
|
223
|
-
- test/test_aliases.rb
|
224
171
|
- test/test_associations.rb
|
225
172
|
- test/test_attribute_methods.rb
|
226
173
|
- test/test_attributes.rb
|
@@ -232,7 +179,6 @@ files:
|
|
232
179
|
- test/test_delete.rb
|
233
180
|
- test/test_dumpable.rb
|
234
181
|
- test/test_dup.rb
|
235
|
-
- test/test_enum.rb
|
236
182
|
- test/test_equal.rb
|
237
183
|
- test/test_exists.rb
|
238
184
|
- test/test_find.rb
|
@@ -247,7 +193,6 @@ files:
|
|
247
193
|
- test/test_preload.rb
|
248
194
|
- test/test_santiago.rb
|
249
195
|
- test/test_serialize.rb
|
250
|
-
- test/test_suite.rb
|
251
196
|
- test/test_touch.rb
|
252
197
|
- test/test_tutorial_example.rb
|
253
198
|
- test/test_update.rb
|
@@ -264,23 +209,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
264
209
|
requirements:
|
265
210
|
- - ">="
|
266
211
|
- !ruby/object:Gem::Version
|
267
|
-
version: 2.
|
212
|
+
version: 2.5.0
|
268
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
214
|
requirements:
|
270
|
-
- - "
|
215
|
+
- - ">="
|
271
216
|
- !ruby/object:Gem::Version
|
272
|
-
version:
|
217
|
+
version: '0'
|
273
218
|
requirements: []
|
274
|
-
rubygems_version: 3.
|
219
|
+
rubygems_version: 3.1.4
|
275
220
|
signing_key:
|
276
221
|
specification_version: 4
|
277
222
|
summary: Composite key support for ActiveRecord
|
278
223
|
test_files:
|
279
224
|
- test/abstract_unit.rb
|
280
|
-
- test/db_test.rb
|
281
225
|
- test/README_tests.rdoc
|
282
|
-
- test/setup.rb
|
283
|
-
- test/test_aliases.rb
|
284
226
|
- test/test_associations.rb
|
285
227
|
- test/test_attributes.rb
|
286
228
|
- test/test_attribute_methods.rb
|
@@ -292,7 +234,6 @@ test_files:
|
|
292
234
|
- test/test_delete.rb
|
293
235
|
- test/test_dumpable.rb
|
294
236
|
- test/test_dup.rb
|
295
|
-
- test/test_enum.rb
|
296
237
|
- test/test_equal.rb
|
297
238
|
- test/test_exists.rb
|
298
239
|
- test/test_find.rb
|
@@ -307,7 +248,6 @@ test_files:
|
|
307
248
|
- test/test_preload.rb
|
308
249
|
- test/test_santiago.rb
|
309
250
|
- test/test_serialize.rb
|
310
|
-
- test/test_suite.rb
|
311
251
|
- test/test_touch.rb
|
312
252
|
- test/test_tutorial_example.rb
|
313
253
|
- test/test_update.rb
|
data/test/db_test.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# assoc_test.rb
|
2
|
-
|
3
|
-
path = File.expand_path(File.join(File.basename(__FILE__), "..", "lib", "composite_primary_keys"))
|
4
|
-
puts path
|
5
|
-
|
6
|
-
require File.join(path)
|
7
|
-
require 'active_record'
|
8
|
-
|
9
|
-
$configuration = {
|
10
|
-
:adapter => 'postgresql',
|
11
|
-
:database => 'cpk_test',
|
12
|
-
:username => 'postgres'
|
13
|
-
}
|
14
|
-
|
15
|
-
ActiveRecord::Base.establish_connection($configuration) unless ActiveRecord::Base.connected?
|
16
|
-
|
17
|
-
module GlobePG
|
18
|
-
class PGBase < ActiveRecord::Base
|
19
|
-
self.abstract_class = true
|
20
|
-
# establish_connection($configuration) unless connected?
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
module GlobePG
|
25
|
-
class TeacherToSchool < PGBase
|
26
|
-
set_table_name 'teacher_to_school'
|
27
|
-
self.primary_keys = ['teacherid', 'schoolid']
|
28
|
-
|
29
|
-
belongs_to :globe_teacher, :foreign_key => 'teacherid'
|
30
|
-
belongs_to :globe_school, :foreign_key => 'schoolid'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
module GlobePG
|
35
|
-
class GlobeSchool < PGBase
|
36
|
-
set_table_name 'globe_school'
|
37
|
-
self.primary_key = 'schoolid'
|
38
|
-
has_many :teacher_to_schools, :foreign_key => :schoolid
|
39
|
-
has_many :globe_teachers, :through => :teacher_to_schools
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
module GlobePG
|
44
|
-
class GlobeTeacher < PGBase
|
45
|
-
set_table_name 'globe_teacher'
|
46
|
-
self.primary_key = 'teacherid'
|
47
|
-
has_many :teacher_to_schools, :foreign_key => :teacherid
|
48
|
-
has_many :globe_schools, :through => :teacher_to_schools
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
teacher = GlobePG::GlobeTeacher.find_by_teacherid('ZZGLOBEY')
|
53
|
-
p teacher.globe_schools
|
data/test/fixtures/hack.rb
DELETED
data/test/fixtures/hacks.yml
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
class ReferenceCodeUsingCompositeKeyAlias < ActiveRecord::Base
|
2
|
-
self.table_name = 'reference_codes'
|
3
|
-
self.primary_key = [:reference_type_id, :reference_code]
|
4
|
-
|
5
|
-
belongs_to :reference_type, :foreign_key => "reference_type_id"
|
6
|
-
|
7
|
-
validates_presence_of :reference_code, :code_label, :abbreviation
|
8
|
-
end
|
@@ -1,8 +0,0 @@
|
|
1
|
-
class ReferenceCodeUsingSimpleKeyAlias < ActiveRecord::Base
|
2
|
-
self.table_name = 'reference_codes'
|
3
|
-
self.primary_key = :code_label
|
4
|
-
|
5
|
-
belongs_to :reference_type, :foreign_key => "reference_type_id"
|
6
|
-
|
7
|
-
validates_presence_of :reference_code, :code_label, :abbreviation
|
8
|
-
end
|
data/test/fixtures/seat.rb
DELETED
data/test/fixtures/seats.yml
DELETED
data/test/fixtures/topic.rb
DELETED
data/test/setup.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# setup_db.rb
|
2
|
-
require 'dbi'
|
3
|
-
|
4
|
-
# Run "createdb cpk_test" first
|
5
|
-
|
6
|
-
teacher_to_school = %Q{
|
7
|
-
create table teacher_to_school(
|
8
|
-
schoolid varchar(8),
|
9
|
-
teacherid varchar(8),
|
10
|
-
datebegin date,
|
11
|
-
teacherrole varchar(20),
|
12
|
-
primary key (schoolid, teacherid)
|
13
|
-
);
|
14
|
-
|
15
|
-
}
|
16
|
-
|
17
|
-
globe_teacher = %Q{
|
18
|
-
create table globe_teacher(
|
19
|
-
teacherid varchar(8) primary key,
|
20
|
-
currentschoolid varchar(8),
|
21
|
-
userid varchar(16)
|
22
|
-
);
|
23
|
-
|
24
|
-
}
|
25
|
-
|
26
|
-
globe_school = %Q{
|
27
|
-
create table globe_school(
|
28
|
-
schoolid varchar(8) primary key,
|
29
|
-
schoolname varchar(100) not null,
|
30
|
-
city varchar(35) not null
|
31
|
-
)
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
add_records = [
|
36
|
-
"insert into globe_teacher values ('ZZGLOBEY', 'ZZGLOBE1',
|
37
|
-
'dberger');",
|
38
|
-
"insert into globe_school values ('ZZCOUCAR', 'NCAR Foothills Lab',
|
39
|
-
'Boulder');",
|
40
|
-
"insert into globe_school values ('ZZGLOBE1', 'The GLOBE Program',
|
41
|
-
'Boulder');",
|
42
|
-
"insert into teacher_to_school values('ZZGLOBE1', 'ZZGLOBEY', '1-JUN-2010', 'GLOBE OFFICE');",
|
43
|
-
"insert into teacher_to_school values('ZZCOUCAR', 'ZZGLOBEY', '1-AUG-2010', 'GLOBE Teacher');"
|
44
|
-
]
|
45
|
-
|
46
|
-
DBI.connect('dbi:Pg:cpk_test', 'postgres') do |dbh|
|
47
|
-
dbh.execute(teacher_to_school)
|
48
|
-
dbh.execute(globe_teacher)
|
49
|
-
dbh.execute(globe_school)
|
50
|
-
add_records.each{ |sql| dbh.execute(sql) }
|
51
|
-
end
|