trains 0.0.18 → 0.0.19

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: 7a1893b50977fd1adda92c2268df81b65f47fa4218961835c11c5534274774db
4
- data.tar.gz: aa0c28905214fa2d776d144e3e58bfa952ad154b91a4f007e0f9d506e6fe723d
3
+ metadata.gz: 93ee7909ca18c2d768daa77d9bfce0096ac1f1965fc3590d6d3cd4fd281698cd
4
+ data.tar.gz: 6e935fff8f51fdda8e95d49f3520aff2d0ce3d71a67e4267a385c1d915e0cd5f
5
5
  SHA512:
6
- metadata.gz: 87bf0d7266a6347d452434b83f19f3798ed68f97b0be036baed26390442894ccf725a0e54bb233cbb25523b9864e9bbc3d246bae5341c489121e1ef80b7195b4
7
- data.tar.gz: 377afeb54297eca4feb98a5c482a348250319f7d61b84650fb33910c91faa86d1c9eade41c34b82cf217c9833ebc5e238af7cc04c86c53255e29480fa4e0d605
6
+ metadata.gz: 77468c5ea8f22d4eba7daae1b188a1535a6de55cf21d4fc210cbaf8637e6afb587c21ed9a274eba27d35f674849863e125f413dcdbcc4927405ed39056ea7590
7
+ data.tar.gz: 20db296bfda78eee13f8affb92c1c4635ec5dd0bc35e24015e6e4b28de64faaef0277ce34cad88e3dde4c9e76eb9513ad3198a22571f1e3a1212c9b163f28c93
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Trains
2
4
  module Utils
5
+ # Combine multiple migrations into models
3
6
  module MigrationTailor
4
7
  def self.stitch(models = {}, migrations)
5
8
  migrations.each do |mig|
@@ -22,8 +25,46 @@ module Trains
22
25
  field.name == mig.fields.first.name
23
26
  end
24
27
  models[mig.table_name].fields.delete(column)
28
+ when :rename_column
29
+ column =
30
+ models[mig.table_name].fields.find do |field|
31
+ field.name == mig.fields.first.name
32
+ end
33
+ models[mig.table_name].fields.push(
34
+ Trains::DTO::Field.new(
35
+ name: mig.fields.first.type.to_sym,
36
+ type: column.type
37
+ )
38
+ )
39
+ models[mig.table_name].fields.delete(column)
25
40
  when :change_table
26
- # TODO: handle renaming columns
41
+ mig.fields.each do |field|
42
+ case field.type
43
+ when :remove
44
+ column =
45
+ models[mig.table_name].fields.find do |mod_field|
46
+ mod_field.name == field.name
47
+ end
48
+ models[mig.table_name].fields.delete(column)
49
+ when :rename
50
+ # find the field and store temporarily
51
+ column =
52
+ models[mig.table_name].fields.find do |mod_field|
53
+ mod_field.name == field.name[0]
54
+ end
55
+ # Create new field from temp with new name
56
+ models[mig.table_name].fields.push(
57
+ Trains::DTO::Field.new(
58
+ name: field.name[1],
59
+ type: column.type
60
+ )
61
+ )
62
+ # Delete the field
63
+ models[mig.table_name].fields.delete(column)
64
+ else
65
+ models[mig.table_name].fields.push(field)
66
+ end
67
+ end
27
68
  when :change_column
28
69
  # get column
29
70
  column =
@@ -34,6 +75,8 @@ module Trains
34
75
  models[mig.table_name].fields.delete(column)
35
76
 
36
77
  models[mig.table_name].fields << mig.fields.first
78
+ else
79
+ next
37
80
  end
38
81
 
39
82
  rescue NoMethodError
@@ -1,3 +1,3 @@
1
1
  module Trains
2
- VERSION = '0.0.18'.freeze
2
+ VERSION = '0.0.19'.freeze
3
3
  end
@@ -22,6 +22,7 @@ module Trains
22
22
  add_column_with_default
23
23
  change_column
24
24
  add_reference
25
+ rename_column
25
26
  remove_column
26
27
  ].freeze
27
28
 
@@ -181,7 +182,11 @@ module Trains
181
182
  # t.references
182
183
  type = :bigint
183
184
  value = "#{node.children[2].value}_id".to_sym
184
- fields << DTO::Field.new(value.to_sym, type)
185
+ fields << DTO::Field.new(value, type)
186
+ when :rename
187
+ type = :rename
188
+ value = node.children[2..3].map { |field| field.value.to_sym }
189
+ fields << DTO::Field.new(value, type)
185
190
  when :index
186
191
  else
187
192
  # t.string, t.integer etc.
@@ -35,7 +35,7 @@ module Trains
35
35
  @result << DTO::Migration.new(
36
36
  @model_class,
37
37
  :add_column,
38
- [DTO::Field.new(node.arguments.first.value, :bigint)],
38
+ [DTO::Field.new(node.arguments.first.value.to_sym, :bigint)],
39
39
  nil
40
40
  )
41
41
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trains
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Syed Faraaz Ahmad
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-31 00:00:00.000000000 Z
11
+ date: 2023-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport