trains 0.0.7 → 0.0.8

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: 553d908187ec4b9cc7e3f06616e096e8a341061ec3a345bce5018c6e1578e4ae
4
- data.tar.gz: 2201e5acb6d148926f4602a885d3588cb902496b788d8565330c9ed3588e3243
3
+ metadata.gz: be756e07f687c79e259385beb680f5749c54a880273be056ba83a717aa821887
4
+ data.tar.gz: da3fc5403f7844919f9bfd3ac49ef37479e7f4149328e851d1b1e654353398af
5
5
  SHA512:
6
- metadata.gz: e4b2ee11d9e1af06232169f886a3695f14e1d2c9418d4449706af4a872932f0efa408a43b3a4f3cd2237a133f3720adc1e94ad6e313facdefe917a401b154134
7
- data.tar.gz: dc2e1d251fc0cdc28d2cc340484eeae228039deab55fbca8b1c61988417d01ce5aa921a7a84367fd661f841e839718ea74048fb7738e740328bb0b969e3907a0
6
+ metadata.gz: 3a389ed84aedba71b13061c4233389d3008bd895a532f506a9f492a6d6aaa54ae96708d27f0e4cba9269f1666ef8f614c5ebf467a8bbf70c63595b449e2bcc0f
7
+ data.tar.gz: be28d384e28be094161bcdb28105a4bef9dd2d7f86978936f554bf699a205c1953a88bd1de071c1005f2ec4d5c54e91bf6ace9e20f7f917bc8204b46ced1a431
@@ -1,3 +1,3 @@
1
1
  module Trains
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -1,10 +1,10 @@
1
- require "yaml"
1
+ require 'yaml'
2
2
 
3
3
  module Trains
4
4
  module Visitor
5
5
  # Visitor that parses DB migration and associates them with Rails models
6
6
  class Migration < Base
7
- def_node_matcher :send_node?, "(send nil? ...)"
7
+ def_node_matcher :send_node?, '(send nil? ...)'
8
8
  attr_reader :is_migration, :model
9
9
 
10
10
  def initialize
@@ -20,7 +20,7 @@ module Trains
20
20
  end
21
21
 
22
22
  def on_class(node)
23
- unless node.parent_class.source.include? "ActiveRecord::Migration"
23
+ unless node.parent_class.source.include? 'ActiveRecord::Migration'
24
24
  return
25
25
  end
26
26
 
@@ -63,49 +63,51 @@ module Trains
63
63
  add_column
64
64
  remove_column
65
65
  change_column
66
+ add_index
67
+ ]
68
+ column_modifiers = %i[
69
+ add_column
70
+ change_column
71
+ remove_column
66
72
  ]
67
- block_type_modifier = false
68
73
 
69
74
  method_name = node.method_name
70
75
  return unless allowed_method_names.include? method_name
71
76
  return if node.body.nil?
72
77
 
73
78
  table_modifier =
74
- if node.body.children[0] == nil
75
- block_type_modifier = false
76
- # if table modifier is a one-liner method call
79
+ # if table modifier is a one-liner method call
80
+ if node.body.children[0].nil?
77
81
  node.body.children[1]
78
82
  elsif node.body.children[0].block_type?
79
- block_type_modifier = true
80
83
  # if table modifier is in a block
81
84
  node.body.children[0].method_name
85
+ elsif node.body.children[0].send_type?
86
+ node.body.children[0].method_name
82
87
  end
83
88
  return unless allowed_table_modifiers.include? table_modifier
84
89
 
85
90
  @table_modifier = table_modifier
86
91
 
87
- # Get the name of the table being modified
88
- if block_type_modifier
89
- raw_table_name =
90
- node.body.children[0].children[0].children[2].value.to_s
91
- @table_name = raw_table_name.singularize.camelize
92
+ node.each_descendant(:send) do |send_node|
93
+ if allowed_table_modifiers.include?(send_node.method_name)
94
+ raw_table_name = send_node.arguments[0]
95
+ @table_name = raw_table_name.value.to_s.singularize.camelize
96
+ if column_modifiers.include?(send_node.method_name)
97
+ @fields.append(DTO::Field.new(send_node.arguments[1].value,
98
+ send_node.arguments[2]&.value))
99
+ end
92
100
 
93
- node.body.children[0].children[2].each_child_node do |child|
94
- process_migration_field(child)
101
+ next
95
102
  end
96
- else
97
- raw_table_name = node.body.children[2].value.to_s
98
- @table_name = raw_table_name.singularize.camelize
99
103
 
100
- field_name = node.body.children[3]&.value
101
- field_type = node.body.children[4]&.value
102
- @fields.append(DTO::Field.new(field_name, field_type))
104
+ next if allowed_table_modifiers.include?(send_node.method_name)
105
+
106
+ parse_migration_field(send_node)
103
107
  end
104
108
  end
105
109
 
106
- def process_migration_field(node)
107
- return unless node.send_type?
108
-
110
+ def parse_migration_field(node)
109
111
  if node.children[1] == :timestamps
110
112
  @fields.append(DTO::Field.new(:created_at, :datetime))
111
113
  @fields.append(DTO::Field.new(:updated_at, :datetime))
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.7
4
+ version: 0.0.8
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-05-22 00:00:00.000000000 Z
11
+ date: 2023-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport