trains 0.0.7 → 0.0.8

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