module StructureSqlMergeDriver::MySQL

Constants

RE_AUTO_INCREMENT_VALUE
RE_DUMP_TIMESTAMP
RE_VERSION
RE_VERSIONS

Public Class Methods

match?(content) click to toggle source
# File lib/git-merge-structure-sql.rb, line 81
def match?(content)
  /^-- MySQL dump / === content
end
merge!(*contents) click to toggle source
# File lib/git-merge-structure-sql.rb, line 85
def merge!(*contents)
  merge_dump_timestamps!(*contents)
  scrub_auto_increment_values!(*contents)
  merge_versions!(*contents)
end

Private Class Methods

format_versions(versions) click to toggle source
# File lib/git-merge-structure-sql.rb, line 123
def format_versions(versions)
  versions.map { |version| "INSERT INTO schema_migrations (version) VALUES ('%s');\n\n" % version }.join
end
merge_dump_timestamps!(*contents) click to toggle source
# File lib/git-merge-structure-sql.rb, line 93
def merge_dump_timestamps!(*contents)
  replacement = contents.inject('') { |timestamp, content|
    [timestamp, *content.scan(RE_DUMP_TIMESTAMP)].max rescue ''
  }

  unless replacement.empty?
    contents.each { |content|
      content.gsub!(RE_DUMP_TIMESTAMP, replacement)
    }
  end
end
merge_versions!(*contents) click to toggle source
# File lib/git-merge-structure-sql.rb, line 111
def merge_versions!(*contents)
  replacement = format_versions(
    contents.inject([]) { |versions, content|
      versions | content.scan(RE_VERSION).flatten
    }.sort
  )

  contents.each { |content|
    content.sub!(RE_VERSIONS, replacement)
  }
end
scrub_auto_increment_values!(*contents) click to toggle source
# File lib/git-merge-structure-sql.rb, line 105
def scrub_auto_increment_values!(*contents)
  contents.each { |content|
    content.gsub!(RE_AUTO_INCREMENT_VALUE, '')
  }
end