declare_schema 1.2.3.pre.ga.6 → 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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/declare_schema/model/habtm_model_shim.rb +1 -5
- data/lib/declare_schema/version.rb +1 -1
- data/lib/generators/declare_schema/migration/migrator.rb +7 -5
- data/spec/lib/declare_schema/model/foreign_key_definition_spec.rb +1 -2
- data/spec/lib/declare_schema/model/habtm_model_shim_spec.rb +26 -1
- metadata +2 -2
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
|
@@ -446,7 +446,7 @@ module Generators
|
|
446
446
|
if !ActiveRecord::Base.connection.class.name.match?(/SQLite3Adapter/)
|
447
447
|
change_primary_key =
|
448
448
|
if (existing_primary_key || defined_primary_key) &&
|
449
|
-
|
449
|
+
existing_primary_key_columns != defined_primary_key&.columns
|
450
450
|
::DeclareSchema::SchemaChange::PrimaryKeyChange.new(new_table_name, existing_primary_key_columns, defined_primary_key&.columns)
|
451
451
|
end
|
452
452
|
end
|
@@ -509,12 +509,14 @@ module Generators
|
|
509
509
|
|
510
510
|
def foreign_key_changes_due_to_column_renames(fks_to_drop, fks_to_add, to_rename)
|
511
511
|
fks_to_drop.each_with_object([[], []]) do |fk_to_drop, (renamed_fks_to_drop, renamed_fks_to_add)|
|
512
|
-
|
512
|
+
fk_to_add = fks_to_add.find do |fk_to_add|
|
513
513
|
fk_to_add.foreign_key.nil? and raise "Foreign key is not allowed to be nil for #{fk_to_add.inspect}"
|
514
514
|
fk_to_add.child_table_name == fk_to_drop.child_table_name &&
|
515
|
-
|
516
|
-
|
517
|
-
end
|
515
|
+
fk_to_add.parent_table_name == fk_to_drop.parent_table_name &&
|
516
|
+
fk_to_add.foreign_key == to_rename[fk_to_drop.foreign_key]
|
517
|
+
end
|
518
|
+
|
519
|
+
if fk_to_add
|
518
520
|
renamed_fks_to_drop << fk_to_drop
|
519
521
|
renamed_fks_to_add << fk_to_add
|
520
522
|
end
|
@@ -49,11 +49,10 @@ RSpec.describe DeclareSchema::Model::ForeignKeyDefinition do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
context 'when all options passed' do
|
52
|
-
let(:foreign_key) { nil }
|
53
52
|
let(:options) { { parent_table: :networks, foreign_key: :the_network_id, constraint_name: :constraint_1, dependent: :delete } }
|
54
53
|
|
55
54
|
it 'normalizes symbols to strings' do
|
56
|
-
expect(subject.foreign_key).to
|
55
|
+
expect(subject.foreign_key).to eq('network_id')
|
57
56
|
expect(subject.foreign_key_name).to eq('the_network_id')
|
58
57
|
expect(subject.parent_table_name).to eq('networks')
|
59
58
|
expect(subject.constraint_name).to eq('constraint_1')
|
@@ -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
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: declare_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.3.pre.ga.
|
4
|
+
version: 1.2.3.pre.ga.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Invoca Development adapted from hobo_fields by Tom Locke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|