declare_schema 1.2.3.pre.ga.7 → 1.2.3.pre.ga.8
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ac52b40b3a13a99d43517d2755123ba3a836140fcf9862d10b35a586eaad9ef7
|
4
|
+
data.tar.gz: d84e7782e16652da230cb9e51ee4c951bba67c692ab58f12056f9e895738d203
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c03703d46e1ed3c149f51ad479e2baacc88bc174a1b5239419c9f906cf0a638b26f0299ac50845660734151e18ef1b0048479abf491b685dd81ba9d55649edf3
|
7
|
+
data.tar.gz: e20b98d2651485183f4df433eb482715d492175c8fb6407e7030ed08c90ae8c5845d633044a335c91578531f3e5c11df23348b81f95cf9d7871204e20a4f4178
|
data/Gemfile.lock
CHANGED
@@ -37,10 +37,6 @@ module DeclareSchema
|
|
37
37
|
join_table
|
38
38
|
end
|
39
39
|
|
40
|
-
def index_name
|
41
|
-
"index_#{table_name}_on_#{foreign_keys.first}_#{foreign_keys.last}"
|
42
|
-
end
|
43
|
-
|
44
40
|
def field_specs
|
45
41
|
foreign_keys.each_with_index.each_with_object({}) do |(v, position), result|
|
46
42
|
result[v] = ::DeclareSchema::Model::FieldSpec.new(self, v, :bigint, position: position, null: false)
|
@@ -57,7 +53,7 @@ module DeclareSchema
|
|
57
53
|
|
58
54
|
def index_definitions_with_primary_key
|
59
55
|
[
|
60
|
-
IndexDefinition.new(self, foreign_keys, unique: true, name:
|
56
|
+
IndexDefinition.new(self, foreign_keys, unique: true, name: "PRIMARY KEY"), # creates a primary composite key on both foreign keys
|
61
57
|
IndexDefinition.new(self, foreign_keys.last) # not unique by itself; combines with primary key to be unique
|
62
58
|
]
|
63
59
|
end
|
@@ -102,12 +102,37 @@ RSpec.describe DeclareSchema::Model::HabtmModelShim do
|
|
102
102
|
expect(result.size).to eq(2), result.inspect
|
103
103
|
|
104
104
|
expect(result.first).to be_a(::DeclareSchema::Model::IndexDefinition)
|
105
|
-
expect(result.first.name).to eq('
|
105
|
+
expect(result.first.name).to eq('PRIMARY KEY')
|
106
106
|
expect(result.first.fields).to eq(['parent_1_id', 'parent_2_id'])
|
107
107
|
expect(result.first.unique).to be_truthy
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
+
context 'when table and foreign key names are long' do
|
112
|
+
let(:join_table) { "advertiser_campaigns_tracking_pixels" }
|
113
|
+
let(:foreign_keys) { ['advertiser_campaign', 'tracking_pixel'] }
|
114
|
+
let(:foreign_key_classes) { [Table1, Table2] }
|
115
|
+
|
116
|
+
before do
|
117
|
+
class Table1 < ActiveRecord::Base
|
118
|
+
self.table_name = 'advertiser_campaign'
|
119
|
+
end
|
120
|
+
|
121
|
+
class Table2 < ActiveRecord::Base
|
122
|
+
self.table_name = 'tracking_pixel'
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'returns two index definitions and does not raise a IndexNameTooLongError' do
|
127
|
+
result = subject.index_definitions_with_primary_key
|
128
|
+
expect(result.size).to eq(2), result.inspect
|
129
|
+
expect(result.first).to be_a(::DeclareSchema::Model::IndexDefinition)
|
130
|
+
expect(result.first.name).to eq('PRIMARY KEY')
|
131
|
+
expect(result.first.fields).to eq(['advertiser_campaign', 'tracking_pixel'])
|
132
|
+
expect(result.first.unique).to be_truthy
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
111
136
|
describe '#index_definitions' do
|
112
137
|
it 'returns index_definitions_with_primary_key' do
|
113
138
|
result = subject.index_definitions
|