jbox-web/job-database-manager

View on GitHub
lib/job_database_manager/db_destroyer.rb

Summary

Maintainability
A
0 mins
Test Coverage
module JobDatabaseManager
  module DbDestroyer

    include BaseJob

    attr_reader :launcher

    # Job Database settings
    attr_reader :job_db_name
    attr_reader :job_db_user


    def initialize(attrs)
      @job_db_name = fix_empty(attrs['job_db_name'])
      @job_db_user = fix_empty(attrs['job_db_user']) || default_job_db_user
    end


    def perform(build, launcher, listener)
      # Set launcher in an instance variable so it's easily accessed by DbAdapter
      @launcher = launcher

      listener << "Ensuring #{db_adapter_name} database for job is removed"

      if job_db_name.nil?
        listener << "No database name configured for job.\n"
        return
      end

      drop_database(build, listener)
      drop_user(build, listener)
    end


    def drop_database(build, listener)
      catch_errors(listener) do
        listener << "Drop #{db_adapter_name} database for job if exists"
        db_connection.drop_database("#{job_db_name}_#{build.number}")
      end
    end


    def drop_user(build, listener)
      catch_errors(listener) do
        listener << "Drop #{db_adapter_name} user for job if exists"
        db_connection.drop_user("#{job_db_user}_#{build.number}")
      end
    end

  end
end