trains 0.0.19 → 0.1.0

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: 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