class Praxis::Mapper::Support::SchemaDumper
Attributes
options[R]
repositories[R]
schema_root[R]
Public Class Methods
new(schema_root='.', **options)
click to toggle source
# File lib/praxis-mapper/support/schema_dumper.rb, line 9 def initialize(schema_root='.', **options) @schema_root = Pathname.new(schema_root) @options = options @connection_manager = ConnectionManager.new @repositories = Hash.new do |hash, repository_name| hash[repository_name] = Set.new end setup! end
Public Instance Methods
dump!(repository_name)
click to toggle source
# File lib/praxis-mapper/support/schema_dumper.rb, line 44 def dump!(repository_name) connection = @connection_manager.checkout(repository_name) connection.extension :schema_dumper tables = self.repositories.fetch repository_name FileUtils.mkdir_p(schema_root + repository_name.to_s) tables.each do |table| File.open(schema_root + repository_name.to_s + "#{table}.rb" ,"w+") do |file| file.puts "Sequel.migration do" file.puts " up do" file.puts connection.dump_table_schema(table).gsub(/^/o, ' ') file.puts "\n" file.puts " end" file.puts "end" end end end
dump_all!()
click to toggle source
# File lib/praxis-mapper/support/schema_dumper.rb, line 38 def dump_all! repositories.each do |repository_name, tables| self.dump!(repository_name) end end
setup!()
click to toggle source
# File lib/praxis-mapper/support/schema_dumper.rb, line 22 def setup! @connection_manager.repositories.each do |repository_name, config| next unless config[:query] == Praxis::Mapper::Query::Sql models = Praxis::Mapper::Model.descendants. select { |model| model.repository_name == repository_name }. select { |model| model.table_name } models.each do |model| table = model.table_name repository = model.repository_name self.repositories[repository] << table end end end