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 +4 -4
- data/lib/trains/version.rb +1 -1
- data/lib/trains/visitor/migration.rb +26 -24
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be756e07f687c79e259385beb680f5749c54a880273be056ba83a717aa821887
|
4
|
+
data.tar.gz: da3fc5403f7844919f9bfd3ac49ef37479e7f4149328e851d1b1e654353398af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a389ed84aedba71b13061c4233389d3008bd895a532f506a9f492a6d6aaa54ae96708d27f0e4cba9269f1666ef8f614c5ebf467a8bbf70c63595b449e2bcc0f
|
7
|
+
data.tar.gz: be28d384e28be094161bcdb28105a4bef9dd2d7f86978936f554bf699a205c1953a88bd1de071c1005f2ec4d5c54e91bf6ace9e20f7f917bc8204b46ced1a431
|
data/lib/trains/version.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
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?,
|
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?
|
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
|
75
|
-
|
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
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
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
|
-
|
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
|
-
|
101
|
-
|
102
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2023-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|