declare_schema 1.2.2.pre.0 → 1.2.3.pre.ga.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/CHANGELOG.md +1 -1
- data/Gemfile.lock +1 -1
- data/lib/declare_schema/version.rb +1 -1
- data/lib/generators/declare_schema/migration/migrator.rb +44 -6
- 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: 64db3ac9b4bea4625bbd2bdc40f9aea3296157c535d3bc773aab680fa33d3e9d
|
4
|
+
data.tar.gz: a5681f63baa97b4cc4409bf9784a0b2c45d58ac8fe251214771ebb269eb649ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e4dd03780302f015725770a734a58d369f9655c7717e64497dbb24ce4602cd379bc7b8db15d89780adb55ec342e485110e8e34fdf0ef522e4925a927433891b
|
7
|
+
data.tar.gz: 61f05f815b21f47fa358950c25b38411dcde90b59b73fbca1a373291e0552dcc1d3c516e1c894c84c5bae5cbe66b2ca80a976ce537c1c42e8b4a2d8d06b3cf56
|
data/CHANGELOG.md
CHANGED
@@ -4,7 +4,7 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
5
5
|
Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
-
## [1.2.2] -
|
7
|
+
## [1.2.2] - 2023-01-27
|
8
8
|
### Changed
|
9
9
|
- Documented `belongs_to` and `has_and_belongs_to_many` behavior
|
10
10
|
- Documented configurable ignored tables behavior
|
data/Gemfile.lock
CHANGED
@@ -407,7 +407,7 @@ module Generators
|
|
407
407
|
fk_changes = if ActiveRecord::Base.connection.class.name.match?(/SQLite3Adapter/)
|
408
408
|
[]
|
409
409
|
else
|
410
|
-
change_foreign_key_constraints(model, current_table_name)
|
410
|
+
change_foreign_key_constraints(model, current_table_name, to_rename)
|
411
411
|
end
|
412
412
|
table_options_changes = if ActiveRecord::Base.connection.class.name.match?(/mysql/i)
|
413
413
|
change_table_options(model, current_table_name)
|
@@ -451,11 +451,30 @@ module Generators
|
|
451
451
|
end
|
452
452
|
end
|
453
453
|
|
454
|
-
|
454
|
+
indexes_to_drop = existing_indexes_without_primary_key - model_indexes_without_primary_key
|
455
|
+
indexes_to_add = model_indexes_without_primary_key - existing_indexes_without_primary_key
|
456
|
+
|
457
|
+
renamed_indexes_to_drop = []
|
458
|
+
renamed_indexes_to_add = []
|
459
|
+
|
460
|
+
indexes_to_drop.each { |index_to_drop|
|
461
|
+
renamed_columns = index_to_drop.columns.map do |column|
|
462
|
+
to_rename[column]
|
463
|
+
end
|
464
|
+
|
465
|
+
indexes_to_add.each { |index_to_add|
|
466
|
+
if renamed_columns == index_to_add.columns
|
467
|
+
renamed_indexes_to_drop.append(index_to_drop)
|
468
|
+
renamed_indexes_to_add.append(index_to_add)
|
469
|
+
end
|
470
|
+
}
|
471
|
+
}
|
472
|
+
|
473
|
+
drop_indexes = (indexes_to_drop - renamed_indexes_to_drop).map do |i|
|
455
474
|
::DeclareSchema::SchemaChange::IndexRemove.new(new_table_name, i.columns, unique: i.unique, where: i.where, name: i.name)
|
456
475
|
end
|
457
476
|
|
458
|
-
add_indexes = (
|
477
|
+
add_indexes = (indexes_to_add - renamed_indexes_to_add).map do |i|
|
459
478
|
::DeclareSchema::SchemaChange::IndexAdd.new(new_table_name, i.columns, unique: i.unique, where: i.where, name: i.name)
|
460
479
|
end
|
461
480
|
|
@@ -463,19 +482,38 @@ module Generators
|
|
463
482
|
[Array(change_primary_key) + drop_indexes + add_indexes]
|
464
483
|
end
|
465
484
|
|
466
|
-
def change_foreign_key_constraints(model, old_table_name)
|
485
|
+
def change_foreign_key_constraints(model, old_table_name, to_rename)
|
467
486
|
ActiveRecord::Base.connection.class.name.match?(/SQLite3Adapter/) and raise ArgumentError, 'SQLite does not support foreign keys'
|
468
487
|
::DeclareSchema.default_generate_foreign_keys or return []
|
469
488
|
|
470
489
|
existing_fks = ::DeclareSchema::Model::ForeignKeyDefinition.for_model(model, old_table_name)
|
471
490
|
model_fks = model.constraint_specs
|
472
491
|
|
473
|
-
|
492
|
+
fks_to_drop = existing_fks - model_fks
|
493
|
+
fks_to_add = model_fks - existing_fks
|
494
|
+
|
495
|
+
renamed_fks_to_drop = []
|
496
|
+
renamed_fks_to_add = []
|
497
|
+
|
498
|
+
fks_to_drop.each { |fk_to_drop|
|
499
|
+
fks_to_add.each { |fk_to_add|
|
500
|
+
if fk_to_add.child_table_name == fks_to_drop.child_table_name &&
|
501
|
+
fk_to_add.parent_table_name == fks_to_drop.parent_table_name &&
|
502
|
+
fk_to_add.constraint_name == fks_to_drop.constraint_name &&
|
503
|
+
fk_to_add.foreign_key == to_rename[fks_to_drop.foreign_key]
|
504
|
+
|
505
|
+
renamed_fks_to_drop.append(fk_to_drop)
|
506
|
+
renamed_fks_to_add.append(fk_to_add)
|
507
|
+
end
|
508
|
+
}
|
509
|
+
}
|
510
|
+
|
511
|
+
drop_fks = (fks_to_drop - renamed_fks_to_drop).map do |fk|
|
474
512
|
::DeclareSchema::SchemaChange::ForeignKeyRemove.new(fk.child_table_name, fk.parent_table_name,
|
475
513
|
column_name: fk.foreign_key_name, name: fk.constraint_name)
|
476
514
|
end
|
477
515
|
|
478
|
-
add_fks = (
|
516
|
+
add_fks = (fks_to_add - renamed_fks_to_add).map do |fk|
|
479
517
|
# next if fk.parent.constantize.abstract_class || fk.parent == fk.model.class_name
|
480
518
|
::DeclareSchema::SchemaChange::ForeignKeyAdd.new(fk.child_table_name, fk.parent_table_name,
|
481
519
|
column_name: fk.foreign_key_name, name: fk.constraint_name)
|
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.
|
4
|
+
version: 1.2.3.pre.ga.0
|
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-
|
11
|
+
date: 2023-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|