Sha256: aeef4c7d00b96593d5ee039c74f27c6472ea2827661311995da13d229c936714
Contents?: true
Size: 1.78 KB
Versions: 2
Compression:
Stored size: 1.78 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' SCHEMA_VAR = '%%SCHEMA%%' TABLE_PARTS_SEPARATOR = '/' TABLES_SQL = "select schemaname || '#{TABLE_PARTS_SEPARATOR}' || tablename from " \ "pg_tables where schemaname = '#{SCHEMA_VAR}'" before_load :clear def clear 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_tables_sql(ts)) end end def dump_command instance.dump_gzip_command end def load_command instance.load_gzip_command end private # @param table_list [Array<String>] # @return [String] def drop_tables_sql(table_list) 'drop table ' + table_list.map(&:to_s).join(', ') + ' cascade' end # @param parts [Array<String>, Strings] # @return [String] def join_table_parts(parts) parts = parts.to_s.split(TABLE_PARTS_SEPARATOR) unless parts.is_a?(::Enumerable) parts.map { |p| "\"#{p}\"" }.join('.') end def run_sql(sql) instance.psql_command_command(sql).execute! end # @return [Array<String>] def tables run_sql(tables_sql).each_line.map(&:strip).reject(&:blank?) .map { |line| join_table_parts(line) } end # @return [String] def tables_sql TABLES_SQL.gsub(SCHEMA_VAR, instance.schema) end end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
avm-eac_postgresql_base0-0.4.0 | lib/avm/eac_postgresql_base0/instance/data_unit.rb |
eac_tools-0.63.0 | sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb |