declare_schema 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65a5d6f6ca6a81d44fe5ff1d1fa0cc73249e2e20f02017e53c9dd3c6a03156b3
4
- data.tar.gz: 167a53b05577190b8bb68b6871c41199ef4a2697fa2bc165fb4ed65355fecfeb
3
+ metadata.gz: e974685df9b53809688f8903ceb82a475e50b24a4725275c3cde5949396fcd85
4
+ data.tar.gz: 6efca4e93e98e3880418821c2f3969600a8ac48b8b967a96fcc959824fd0e1fd
5
5
  SHA512:
6
- metadata.gz: 11722905e9a2761a84124aadf10f20221eb8c5bab9aec35e65a2db216b14607f958db2fe2076920d4bcd6e537ca8dabad5c60ef514a5ff843e6675d4e042ac84
7
- data.tar.gz: 103f1a41b5176b575b60141ed207c8e57d0c4ed8bc55a0235c318f928ff0a2dbf20bc2b889d8a6260c43fd0bcb1549a43581e594f1b2ebb70dc8312f68ab6476
6
+ metadata.gz: 1f2dac19cdac8a2a5b59f7d20f34c6230e69981a89b180e47080f5c77ba047962ed1f1badeeb69230b14c8a074e96b0588bb9ff9e2430ff2a5496c1d60318cc9
7
+ data.tar.gz: 90098f7d95782c943e17f04b8fc4f1ed23a4cecf63f6208b54fdfff60af19ca4c43ab661eacd055319ca5ec290b1ac1591586a8ec852eda41375d2b2d020346a
@@ -0,0 +1 @@
1
+ * @Invoca/octothorpe
data/CHANGELOG.md CHANGED
@@ -4,6 +4,20 @@ 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.1.0] - 2022-07-22
8
+ ### Changed
9
+ - Fixed a bug where `DeclareSchema::Model::HabtmModelShim` `indexes` and `integer limits` were not being generated properly. Use `limit 8` for ids and primary composite key for habtm model.
10
+ - `index_definitions_with_primary_key`
11
+
12
+ ## [1.0.2] - 2022-07-18
13
+ ### Fixed
14
+ - Fixed a bug where `SchemaChange::ColumnRemove` was not loaded and causing an exception to raise
15
+ when a column was being removed during migration generation
16
+
17
+ ## [1.0.1] - 2022-07-12
18
+ ### Fixed
19
+ - Remove lingering usage of `fallback_find_primary_key` method that was removed in `0.14.0`
20
+
7
21
  ## [1.0.0] - 2022-03-28
8
22
  ### Added
9
23
  - Added support for Ruby 3+
@@ -215,6 +229,9 @@ using the appropriate Rails configuration attributes.
215
229
  ### Added
216
230
  - Initial version from https://github.com/Invoca/hobo_fields v4.1.0.
217
231
 
232
+ [1.1.0]: https://github.com/Invoca/declare_schema/compare/v1.0.2...v1.1.0
233
+ [1.0.2]: https://github.com/Invoca/declare_schema/compare/v1.0.1...v1.0.2
234
+ [1.0.1]: https://github.com/Invoca/declare_schema/compare/v1.0.0...v1.0.1
218
235
  [1.0.0]: https://github.com/Invoca/declare_schema/compare/v0.14.3...v1.0.0
219
236
  [0.14.3]: https://github.com/Invoca/declare_schema/compare/v0.14.2...v0.14.3
220
237
  [0.14.2]: https://github.com/Invoca/declare_schema/compare/v0.14.1...v0.14.2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- declare_schema (1.0.0)
4
+ declare_schema (1.1.0)
5
5
  rails (>= 5.0)
6
6
 
7
7
  GEM
@@ -36,7 +36,7 @@ module DeclareSchema
36
36
  parent_table: parent_table,
37
37
  foreign_key: foreign_key
38
38
  }
39
- options[:dependent] = :delete if fkc['ON DELETE CASCADE']
39
+ options[:dependent] = :delete if fkc['ON DELETE CASCADE'] || model.is_a?(DeclareSchema::Model::HabtmModelShim)
40
40
 
41
41
  new(model, foreign_key, **options)
42
42
  end
@@ -37,9 +37,13 @@ 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
+
40
44
  def field_specs
41
45
  foreign_keys.each_with_index.each_with_object({}) do |(v, position), result|
42
- result[v] = ::DeclareSchema::Model::FieldSpec.new(self, v, :integer, position: position, null: false)
46
+ result[v] = ::DeclareSchema::Model::FieldSpec.new(self, v, :bigint, position: position, null: false)
43
47
  end
44
48
  end
45
49
 
@@ -53,7 +57,7 @@ module DeclareSchema
53
57
 
54
58
  def index_definitions_with_primary_key
55
59
  [
56
- IndexDefinition.new(self, foreign_keys, unique: true, name: ::DeclareSchema::Model::IndexDefinition::PRIMARY_KEY_NAME),
60
+ IndexDefinition.new(self, foreign_keys, unique: true, name: index_name), # creates a primary composite key on both foriegn keys
57
61
  IndexDefinition.new(self, foreign_keys.last) # not unique by itself; combines with primary key to be unique
58
62
  ]
59
63
  end
@@ -33,11 +33,14 @@ module DeclareSchema
33
33
 
34
34
  class << self
35
35
  # extract IndexSpecs from an existing table
36
- # always includes the PRIMARY KEY index
36
+ # always includes the PRIMARY KEY index for Model unless it is a HABTM Model.
37
37
  def for_model(model, old_table_name = nil)
38
38
  t = old_table_name || model.table_name
39
39
 
40
- primary_key_columns = Array(model.connection.primary_key(t)).presence || fallback_find_primary_key(model, t) or
40
+ habtm_model = model.is_a?(DeclareSchema::Model::HabtmModelShim)
41
+
42
+ primary_key_columns = Array(model.connection.primary_key(t)).presence
43
+ primary_key_columns || habtm_model or
41
44
  raise "could not find primary key for table #{t} in #{model.connection.columns(t).inspect}"
42
45
 
43
46
  primary_key_found = false
@@ -47,14 +50,14 @@ module DeclareSchema
47
50
  i.columns == primary_key_columns && i.unique or
48
51
  raise "primary key on #{t} was not unique on #{primary_key_columns} (was unique=#{i.unique} on #{i.columns})"
49
52
  primary_key_found = true
50
- elsif i.columns == primary_key_columns && i.unique
53
+ elsif i.columns == primary_key_columns && i.unique && !habtm_model
51
54
  # skip this primary key index since we'll create it below, with PRIMARY_KEY_NAME
52
55
  next
53
56
  end
54
57
  new(model, i.columns, name: i.name, unique: i.unique, where: i.where, table_name: old_table_name)
55
58
  end.compact
56
59
 
57
- if !primary_key_found
60
+ if !primary_key_found && !habtm_model
58
61
  index_definitions << new(model, primary_key_columns, name: PRIMARY_KEY_NAME, unique: true, where: nil, table_name: old_table_name)
59
62
  end
60
63
  index_definitions
@@ -7,6 +7,7 @@ module DeclareSchema
7
7
  autoload :Base, 'declare_schema/schema_change/base'
8
8
  autoload :ColumnAdd, 'declare_schema/schema_change/column_add'
9
9
  autoload :ColumnChange, 'declare_schema/schema_change/column_change'
10
+ autoload :ColumnRemove, 'declare_schema/schema_change/column_remove'
10
11
  autoload :ColumnRename, 'declare_schema/schema_change/column_rename'
11
12
  autoload :ForeignKeyAdd, 'declare_schema/schema_change/foreign_key_add'
12
13
  autoload :ForeignKeyRemove, 'declare_schema/schema_change/foreign_key_remove'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeclareSchema
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -102,14 +102,9 @@ 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('PRIMARY')
105
+ expect(result.first.name).to eq('index_parent_1_parent_2_on_parent_1_id_parent_2_id')
106
106
  expect(result.first.fields).to eq(['parent_1_id', 'parent_2_id'])
107
107
  expect(result.first.unique).to be_truthy
108
-
109
- expect(result.last).to be_a(::DeclareSchema::Model::IndexDefinition)
110
- expect(result.last.name).to eq('on_parent_2_id')
111
- expect(result.last.unique).to be_falsey
112
- expect(result.last.fields).to eq(['parent_2_id'])
113
108
  end
114
109
  end
115
110
 
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.0.0
4
+ version: 1.1.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: 2022-03-28 00:00:00.000000000 Z
11
+ date: 2022-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -32,7 +32,7 @@ executables:
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
- - ".github/dependabot.yml"
35
+ - ".github/CODEOWNERS"
36
36
  - ".github/workflows/declare_schema_build.yml"
37
37
  - ".github/workflows/gem_release.yml"
38
38
  - ".gitignore"
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  - !ruby/object:Gem::Version
142
142
  version: 1.3.6
143
143
  requirements: []
144
- rubygems_version: 3.1.6
144
+ rubygems_version: 3.3.11
145
145
  signing_key:
146
146
  specification_version: 4
147
147
  summary: Database schema declaration and migration generator for Rails
@@ -1,14 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: bundler
4
- directory: "/"
5
- schedule:
6
- interval: weekly
7
- day: friday
8
- time: "22:00"
9
- timezone: PST8PDT
10
- open-pull-requests-limit: 99
11
- versioning-strategy: lockfile-only
12
- commit-message:
13
- prefix: No-Jira
14
- include: scope