unepwcmc/SAPI

View on GitHub
lib/psql_command.rb

Summary

Maintainability
A
0 mins
Test Coverage
class PsqlCommand

  def initialize(sql_cmd)
    db_conf = ApplicationRecord.connection_db_config.configuration_hash
    @host = db_conf[:host] || 'localhost'
    @port = db_conf[:port] || 5432
    @username = db_conf[:username]
    @password = db_conf[:password]
    @database = db_conf[:database]
    # remove comments form multi line sql
    @sql_cmd = sql_cmd.gsub(/--.*$/, ' ')
    @psql_cmd = "psql -h #{@host} -p #{@port} -U #{@username} #{@database}"
  end

  def execute
    unless system("export PGPASSWORD=#{@password} && echo \"#{@sql_cmd.split("\n").join(' ')}\" | #{@psql_cmd}")
      Rails.logger.error("#{$!}")
    end
  end

end