trains 0.0.19 → 0.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: 93ee7909ca18c2d768daa77d9bfce0096ac1f1965fc3590d6d3cd4fd281698cd
4
- data.tar.gz: 6e935fff8f51fdda8e95d49f3520aff2d0ce3d71a67e4267a385c1d915e0cd5f
3
+ metadata.gz: 760e5b8af816d5480e1ba069af6b42c3af88ca0833322049a730345403ddc348
4
+ data.tar.gz: 77ee8712a8934224accf6d522623613e8e264d1de92bac6f58ace205f20cd12c
5
5
  SHA512:
6
- metadata.gz: 77468c5ea8f22d4eba7daae1b188a1535a6de55cf21d4fc210cbaf8637e6afb587c21ed9a274eba27d35f674849863e125f413dcdbcc4927405ed39056ea7590
7
- data.tar.gz: 20db296bfda78eee13f8affb92c1c4635ec5dd0bc35e24015e6e4b28de64faaef0277ce34cad88e3dde4c9e76eb9513ad3198a22571f1e3a1212c9b163f28c93
6
+ metadata.gz: 260b68afd11589fa470c4475cd759b521ccd0b82bd3ceb5668acbb7dffd63bcc348a45f72c889e1d2d1902740f5bd9aef6f4aa0cc5ba14032bb8f0242abbf6ca
7
+ data.tar.gz: f04a57a248c8c657e34866106273e06bb2eb1e5d2bbc282fe2762422704f11521f2d97ce12a73f4dfa8ada78725091c3e27bc75b5fb0695cf536eef322ce4252
@@ -1,5 +1,12 @@
1
1
  module Trains
2
2
  module DTO
3
- Model = Data.define(:name, :fields, :version)
3
+ Model = Data.define(
4
+ :name, :fields, :version, :renamed_columns, :removed_columns, :ignored_columns
5
+ ) do
6
+ def initialize(name:, fields:, version:, renamed_columns: [],
7
+ removed_columns: [], ignored_columns: [])
8
+ super(name:, fields:, version:, renamed_columns:, removed_columns:, ignored_columns:)
9
+ end
10
+ end
4
11
  end
5
12
  end
@@ -0,0 +1,5 @@
1
+ module Trains
2
+ module DTO
3
+ Rename = Data.define(:from, :to)
4
+ end
5
+ end
@@ -19,12 +19,15 @@ module Trains
19
19
  end
20
20
  when :add_column, :add_column_with_default, :add_reference
21
21
  models[mig.table_name].fields.push(*mig.fields)
22
+ when :ignore_column
23
+ models[mig.table_name].ignored_columns.push(*mig.fields.map(&:name))
22
24
  when :remove_column
23
25
  column =
24
26
  models[mig.table_name].fields.find do |field|
25
27
  field.name == mig.fields.first.name
26
28
  end
27
29
  models[mig.table_name].fields.delete(column)
30
+ models[mig.table_name].removed_columns.push(mig.fields.first.name)
28
31
  when :rename_column
29
32
  column =
30
33
  models[mig.table_name].fields.find do |field|
@@ -37,6 +40,11 @@ module Trains
37
40
  )
38
41
  )
39
42
  models[mig.table_name].fields.delete(column)
43
+ models[mig.table_name].renamed_columns.push(
44
+ Trains::DTO::Rename.new(
45
+ from: mig.fields.first.name.to_sym, to: mig.fields.first.type.to_sym
46
+ )
47
+ )
40
48
  when :change_table
41
49
  mig.fields.each do |field|
42
50
  case field.type
@@ -46,6 +54,7 @@ module Trains
46
54
  mod_field.name == field.name
47
55
  end
48
56
  models[mig.table_name].fields.delete(column)
57
+ models[mig.table_name].removed_columns.push(field.name)
49
58
  when :rename
50
59
  # find the field and store temporarily
51
60
  column =
@@ -55,12 +64,17 @@ module Trains
55
64
  # Create new field from temp with new name
56
65
  models[mig.table_name].fields.push(
57
66
  Trains::DTO::Field.new(
58
- name: field.name[1],
67
+ name: field.name[1].to_sym,
59
68
  type: column.type
60
69
  )
61
70
  )
62
71
  # Delete the field
63
72
  models[mig.table_name].fields.delete(column)
73
+ models[mig.table_name].renamed_columns.push(
74
+ Trains::DTO::Rename.new(
75
+ from: field.name[0], to: field.name[1]
76
+ )
77
+ )
64
78
  else
65
79
  models[mig.table_name].fields.push(field)
66
80
  end
@@ -1,3 +1,3 @@
1
1
  module Trains
2
- VERSION = '0.0.19'.freeze
2
+ VERSION = '0.1.0'.freeze
3
3
  end
@@ -9,6 +9,7 @@ module Trains
9
9
  belongs_to
10
10
  has_one
11
11
  has_and_belongs_to_many
12
+ ignored_columns=
12
13
  ].freeze
13
14
  MODEL_PARENT_CLASSES = %w[
14
15
  ApplicationRecord
@@ -32,6 +33,25 @@ module Trains
32
33
  def parse_model(node)
33
34
  return unless POSSIBLE_ASSOCIATIONS.include?(node.method_name)
34
35
 
36
+ if node.method_name == :ignored_columns=
37
+ return if node.arguments.nil?
38
+ return unless node.arguments.first.is_a? RuboCop::AST::ArrayNode
39
+
40
+ arguments = node.arguments.first.to_a
41
+ arguments = arguments.select do |child|
42
+ child.is_a?(RuboCop::AST::SymbolNode) || child.is_a?(RuboCop::AST::StrNode)
43
+ end.map(&:value)
44
+
45
+ @result << DTO::Migration.new(
46
+ @model_class,
47
+ :ignore_column,
48
+ [*arguments.map { |arg| DTO::Field.new(arg.to_sym, nil) }],
49
+ nil
50
+ )
51
+
52
+ return
53
+ end
54
+
35
55
  @result << DTO::Migration.new(
36
56
  @model_class,
37
57
  :add_column,
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.19
4
+ version: 0.1.0
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-08-04 00:00:00.000000000 Z
11
+ date: 2023-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -91,6 +91,7 @@ files:
91
91
  - lib/trains/dto/method.rb
92
92
  - lib/trains/dto/migration.rb
93
93
  - lib/trains/dto/model.rb
94
+ - lib/trains/dto/rename.rb
94
95
  - lib/trains/dto/route.rb
95
96
  - lib/trains/scanner.rb
96
97
  - lib/trains/utils/args.rb