Sha256: 43dce062e69fb81e2801986da9ddc50fa6f23682928c0e039c27cb48805d67cc

Contents?: true

Size: 1.21 KB

Versions: 5

Compression:

Stored size: 1.21 KB

Contents

module EY
  module Backup
    class Database
      def initialize(engine, base_path, keep, backend, environment, name)
        if name.nil? || name.empty?
          raise ArgumentError, "database name is blank"
        end
        @engine    = engine
        @base_path = base_path
        @keep      = keep
        @backend = backend
        @environment = environment
        @name = name
      end
      attr_reader :name, :engine, :environment, :keep, :base_path

      def bucket_minder
        @backend.bucket_minder
      end

      def backups
        s3_objects = bucket_minder.list("#{@environment}.#{@name}/").select { |o| o[:name] =~ @engine.suffix }
        s3_objects.map {|o| BackupSet.new(self, o[:name], nil, o[:keys]) }.sort
      end

      def dump
        FileUtils.mkdir_p(@base_path)

        basename = generate_basename
        file = @engine.dump(@name, basename)

        BackupSet.from(self, basename, file)
      end

      def start_upload(filenames)
        @backend.start_upload(filenames, @environment, @name)
      end

      def generate_basename
        "#{@base_path}/#{@name}.#{timestamp}"
      end

      def timestamp
        Time.now.strftime("%Y-%m-%dT%H-%M-%S")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ey_cloud_server-1.4.47a lib/ey_backup/database.rb
ey_cloud_server-1.4.47 lib/ey_backup/database.rb
ey_cloud_server-1.4.46 lib/ey_backup/database.rb
ey_cloud_server-1.4.45 lib/ey_backup/database.rb
ey_cloud_server-1.4.42 lib/ey_backup/database.rb