Sha256: 6fbcbd20132cac2b61c8e3f95eabf3e477ccb2213c72673e8b1949a55654a634

Contents?: true

Size: 1.06 KB

Versions: 7

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

require 'avm/instances/data/unit'

module Avm
  module EacPostgresqlBase0
    class Instance
      class DataUnit < ::Avm::Instances::Data::Unit
        EXTENSION = '.pgdump.gz'
        TABLES_SQL = 'select tablename from pg_tables where schemaname = \'public\''

        before_load :clear_database

        def dump_command
          instance.dump_gzip_command
        end

        def load_command
          instance.load_gzip_command
        end

        private

        def clear_database
          info 'Clearing database (Dropping all tables)...'
          ts = tables
          if ts.empty?
            info 'Database has no tables'
          else
            info "Removing #{ts.count} table(s)..."
            run_sql('drop table if exists ' + ts.map { |t| "\"#{t}\"" }.join(', ') + ' cascade')
          end
        end

        def run_sql(sql)
          instance.psql_command_command(sql).execute!
        end

        def tables
          run_sql(TABLES_SQL).each_line.map(&:strip).reject(&:blank?)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
eac_tools-0.62.0 sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb
eac_tools-0.61.1 sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb
eac_tools-0.61.0 sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb
eac_tools-0.60.3 sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb
eac_tools-0.60.2 sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb
avm-eac_postgresql_base0-0.2.4 lib/avm/eac_postgresql_base0/instance/data_unit.rb
eac_tools-0.60.1 sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb