Sha256: c6f5b696afca0b008fc9fbf9d0efe2d44033780e4bbb27e37f95ad6cd2a845ca

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

require 'mongo-db-utils/models/db'
module MongoDbUtils

  module Model
    class Config
      attr_reader :dbs, :buckets
      attr_writer :writer
      attr_accessor :backup_folder

      def initialize
        @dbs = []
        @buckets = []
      end

      def empty?
        @dbs.nil? || @dbs.empty?
      end

      def has_buckets?
        !@buckets.nil? && !@buckets.empty?
      end

      def flush
        @dbs = []
        @writer.flush
      end

      def remove_db(db)
        @dbs = @dbs - [db]
        save
      end

      def add_replica_set(uri, name)
        add_db ReplicaSetDb.new(uri,name)
      end


      def add_db_from_uri(uri)
        add_db Db.new(uri)
      end

      def already_contains(db)
        !@dbs.find{|current| current.uri == db.uri }.nil?
      end

      # because we are serializing the config - the bucket may be nil
      # at this point
      def add_bucket(bucket)
        @buckets = [] if @buckets.nil?
        unless already_contains_bucket?(bucket)
          @buckets << bucket
          save
        end
      end

      def already_contains_bucket?(bucket)
        !@buckets.find{ |b| b.to_s == bucket.to_s}.nil?
      end

      def to_s
        "Config"
      end

      private
      def save
        @writer.save(self) unless @writer.nil?
      end

      def add_db(db)
        @dbs = [] if @dbs.nil?
        unless db.nil? || already_contains(db)
          @dbs << db
          @dbs.sort!
          save
        end
        @dbs.include?(db) && !db.nil?
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongo-db-utils-0.0.9.2 lib/mongo-db-utils/models/config.rb