Sha256: a9ef77eb5198447164e70205ce1dfb48157e12c086c7a2f69b75af1dec71cdda

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module Dk; end
module Dk::Dumpdb

  class Db

    DEFAULT_VALUE = ''.freeze

    def initialize(dump_file_name = nil, values = nil)
      dump_file_name = dump_file_name || 'dump.output'
      @values        = dk_dumpdb_symbolize_keys(values)

      [:host, :port, :user, :pw, :db, :output_root].each do |key|
        @values[key] ||= DEFAULT_VALUE
      end

      @values[:output_dir] = dk_dumpdb_build_output_dir(
        self.output_root,
        self.host,
        self.db
      )
      @values[:dump_file] = File.join(self.output_dir, dump_file_name)
    end

    def to_hash; @values; end

    def method_missing(meth, *args, &block)
      if @values.has_key?(meth.to_sym)
        @values[meth.to_sym]
      else
        super
      end
    end

    def respond_to?(meth)
      @values.has_key?(meth.to_sym) || super
    end

    def ==(other_db)
      if other_db.kind_of?(Db)
        self.to_hash == other_db.to_hash
      else
        super
      end
    end

    private

    def dk_dumpdb_build_output_dir(output_root, host, database)
      dir_name = dk_dumpdb_build_output_dir_name(host, database)
      if output_root && !output_root.to_s.empty?
        File.join(output_root, dir_name)
      else
        dir_name
      end
    end

    def dk_dumpdb_build_output_dir_name(host, database)
      [host, database, Time.now.to_f].map(&:to_s).reject(&:empty?).join("__")
    end

    def dk_dumpdb_symbolize_keys(values)
      (values || {}).inject({}) do |h, (k, v)|
        h.merge(k.to_sym => v)
      end
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dk-dumpdb-0.1.0 lib/dk-dumpdb/db.rb