Class: Migflow::Services::MigrationDslScanner

Inherits:
Object
  • Object
show all
Defined in:
lib/migflow/services/migration_dsl_scanner.rb

Constant Summary collapse

BLOCK_NON_COLUMNS =
%w[
  column index timestamps remove remove_columns rename change
  change_default change_null remove_references remove_timestamps
  remove_index rename_index check_constraint remove_check_constraint
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(content) ⇒ MigrationDslScanner

Returns a new instance of MigrationDslScanner.



12
13
14
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 12

def initialize(content)
  @content = content
end

Instance Method Details

#add_check_constraintsObject



92
93
94
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 92

def add_check_constraints
  @content.scan(/add_check_constraint\s+[:"'](\w+)[:"']?,\s*["'](.+?)["']([^\n]*)/)
end

#add_columnsObject



28
29
30
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 28

def add_columns
  @content.scan(/add_column\s*\(?\s*[:"'](\w+)[:"']?\s*,\s*[:"'](\w+)[:"']?\s*,\s*[:"'](\w+)([^\n]*)/)
end

#add_foreign_keysObject



84
85
86
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 84

def add_foreign_keys
  @content.scan(/add_foreign_key\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?([^\n]*)/)
end

#add_indexesObject



76
77
78
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 76

def add_indexes
  @content.scan(/add_index\s+[:"'](\w+)[:"']?,\s*(\[.*?\]|[:"']\w+[:"']?)([^\n]*)/)
end

#add_referencesObject



40
41
42
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 40

def add_references
  @content.scan(/add_(?:reference|belongs_to)\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?([^\n]*)/)
end

#block_add_check_constraints(block) ⇒ Object



152
153
154
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 152

def block_add_check_constraints(block)
  block.scan(/t\.check_constraint\s+["'](.+?)["']([^\n]*)/)
end

#block_add_indexes(block) ⇒ Object



120
121
122
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 120

def block_add_indexes(block)
  block.scan(/t\.index\s+(\[.*?\]|[:"']\w+[:"']?)([^\n]*)/)
end

#block_change_defaults(block) ⇒ Object



140
141
142
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 140

def block_change_defaults(block)
  block.scan(/t\.change_default\s+[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#block_change_nulls(block) ⇒ Object



144
145
146
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 144

def block_change_nulls(block)
  block.scan(/t\.change_null\s+[:"'](\w+)[:"']?,\s*(true|false)(?:,\s*([^\n]+))?/)
end

#block_column_definitions(block) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 100

def block_column_definitions(block)
  definitions = []

  block.scan(/t\.column\s+[:"'](\w+)[:"']?,\s*:?(?:["'])?(\w+)(?:["'])?([^\n]*)/) do |name, type, opts|
    definitions << [:column, name, type, opts]
  end

  block.scan(/t\.(\w+)\s+[:"'](\w+)[:"']?([^\n]*)/) do |type, name, opts|
    next if BLOCK_NON_COLUMNS.include?(type)

    definitions << [type, name, opts]
  end

  definitions
end

#block_has_timestamps?(block) ⇒ Boolean

Returns:

  • (Boolean)


116
117
118
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 116

def block_has_timestamps?(block)
  block.match?(/t\.timestamps/)
end

#block_remove_check_constraints(block) ⇒ Object



156
157
158
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 156

def block_remove_check_constraints(block)
  block.scan(/t\.remove_check_constraint\s+([^\n]+)/).flatten
end

#block_remove_columns(block) ⇒ Object



128
129
130
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 128

def block_remove_columns(block)
  block.scan(/t\.remove\s+[:"'](\w+)/).flatten
end

#block_remove_columns_plural(block) ⇒ Object



132
133
134
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 132

def block_remove_columns_plural(block)
  block.scan(/t\.remove_columns\s+([^\n]+)/).flatten
end

#block_remove_indexes(block) ⇒ Object



124
125
126
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 124

def block_remove_indexes(block)
  block.scan(/t\.remove_index\s+([^\n]+)/).flatten
end

#block_remove_references(block) ⇒ Object



136
137
138
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 136

def block_remove_references(block)
  block.scan(/t\.remove_(?:reference|references|belongs_to)\s+[:"'](\w+)[:"']?([^\n]*)/)
end

#block_rename_indexes(block) ⇒ Object



148
149
150
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 148

def block_rename_indexes(block)
  block.scan(/t\.rename_index\s+([:"']\w+[:"']?),\s*([:"']\w+[:"']?)/)
end

#change_column_commentsObject



72
73
74
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 72

def change_column_comments
  @content.scan(/change_column_comment\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#change_column_defaultsObject



64
65
66
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 64

def change_column_defaults
  @content.scan(/change_column_default\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#change_column_nullsObject



68
69
70
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 68

def change_column_nulls
  @content.scan(/change_column_null\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?,\s*(true|false)(?:,\s*([^\n]+))?/)
end

#change_columnsObject



60
61
62
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 60

def change_columns
  @content.scan(/change_column\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?,\s*[:"'](\w+)/)
end

#change_table_blocksObject



20
21
22
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 20

def change_table_blocks
  @content.scan(/change_table\s+[:"'](\w+)[:"']?[^\n]*\n(.*?)\n\s*end\b/m)
end

#create_table_blocksObject



16
17
18
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 16

def create_table_blocks
  @content.scan(/create_table\s+[:"'](\w+)[:"']?[^\n]*\n(.*?)\n\s*end\b/m)
end

#drop_tablesObject



24
25
26
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 24

def drop_tables
  @content.scan(/drop_table\s+[:"'](\w+)/).flatten
end

#remove_check_constraintsObject



96
97
98
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 96

def remove_check_constraints
  @content.scan(/remove_check_constraint\s+[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#remove_columnObject



32
33
34
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 32

def remove_column
  @content.scan(/remove_column\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)/)
end

#remove_columnsObject



36
37
38
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 36

def remove_columns
  @content.scan(/remove_columns\s+[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#remove_foreign_keysObject



88
89
90
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 88

def remove_foreign_keys
  @content.scan(/remove_foreign_key\s+[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#remove_indexesObject



80
81
82
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 80

def remove_indexes
  @content.scan(/remove_index\s+[:"'](\w+)[:"']?,\s*([^\n]+)/)
end

#remove_referencesObject



44
45
46
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 44

def remove_references
  @content.scan(/remove_(?:reference|references|belongs_to)\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?([^\n]*)/)
end

#rename_columnsObject



48
49
50
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 48

def rename_columns
  @content.scan(/rename_column\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)[:"']?,\s*[:"'](\w+)/)
end

#rename_indexesObject



56
57
58
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 56

def rename_indexes
  @content.scan(/rename_index\s+[:"'](\w+)[:"']?,\s*([:"']\w+[:"']?),\s*([:"']\w+[:"']?)/)
end

#rename_tablesObject



52
53
54
# File 'lib/migflow/services/migration_dsl_scanner.rb', line 52

def rename_tables
  @content.scan(/rename_table\s+[:"'](\w+)[:"']?,\s*[:"'](\w+)/)
end