Class: Migflow::Parsers::SchemaParser

Inherits:
Object
  • Object
show all
Defined in:
lib/migflow/parsers/schema_parser.rb

Constant Summary collapse

VERSION_PATTERN =
/ActiveRecord::Schema(?:\[[\d.]+\])?\.define\(version:\s*([\d_]+)\)/
CREATE_TABLE_PATTERN =
/create_table\s+"([^"]+)"/
COLUMN_PATTERN =
/t\.(\w+)\s+"([^"]+)"(.*)/
INDEX_PATTERN =
/add_index\s+"([^"]+)",\s+(\[.*?\]|"[^"]+"|'[^']+')(.*)/
UNIQUE_PATTERN =
/unique:\s*true/
NULL_PATTERN =
/null:\s*(true|false)/
DEFAULT_PATTERN =
/default:\s*([^,\n]+)/
LIMIT_PATTERN =
/limit:\s*(\d+)/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schema_path:) ⇒ SchemaParser

Returns a new instance of SchemaParser.



19
20
21
# File 'lib/migflow/parsers/schema_parser.rb', line 19

def initialize(schema_path:)
  @schema_path = Pathname.new(schema_path)
end

Class Method Details

.call(schema_path:) ⇒ Object



15
16
17
# File 'lib/migflow/parsers/schema_parser.rb', line 15

def self.call(schema_path:)
  new(schema_path: schema_path).parse
end

Instance Method Details

#parseObject



23
24
25
26
27
28
29
# File 'lib/migflow/parsers/schema_parser.rb', line 23

def parse
  content = @schema_path.read
  {
    version: extract_version(content),
    tables: extract_tables(content)
  }
end