Sha256: d818d6ba45b7944b2ce6adfa40c87a713fb9c46946d9d930683d5a237719b976

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

module Dag
  class DatabaseCollection < Model
    include Enumerable
    include Dag::Client::ClusterValidation

    attr_reader :cluster_name

    def initialize(api, cluster_name, cluster_status: nil)
      super(api)

      @cluster_name = cluster_name
      @cluster_status = cluster_status
    end

    def each
      validate_cluster

      find_from_api unless find?

      @databases.each do |db_name|
        yield Dag::Database.new(@api, @cluster_name, db_name)
      end
    end

    def create(db_name)
      validate_cluster

      @api.create_database(@cluster_name, db_name)
      Dag::Database.new(@api, @cluster_name, db_name)
    end

    private

    def find_from_api
      dbs = []
      tmp = {}
      params = { "max" => 100 }
      begin
        params.merge!({"marker" => tmp["nextMarker"]}) rescue nil
        tmp = @api.database_list(@cluster_name , params: params)
        dbs += tmp["databases"]
      end while tmp["isTruncated"]

      @databases = dbs
    end

    def find?
      @databases.present?
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
iij-dag-client-1.0.2 lib/dag/client/model/database_collection.rb
iij-dag-client-1.0.1 lib/dag/client/model/database_collection.rb