Sha256: 4204bbedfda53ad08424196e897dfbaa03e13df7bbc7667e48a0ce615321abc4

Contents?: true

Size: 1.03 KB

Versions: 26

Compression:

Stored size: 1.03 KB

Contents

require "stepmod/utils/change"

module Stepmod
  module Utils
    class ChangeCollection
      def initialize(stepmod_dir:)
        @stepmod_dir = stepmod_dir
        @changes = {}
      end

      def fetch_or_initialize(change, type)
        schema = schema_name(change)

        @changes[schema_identifier(schema, type)] ||= Change.new(
          type: type,
          stepmod_dir: @stepmod_dir,
          schema_name: schema,
        )
      end

      def fetch(change, type)
        schema = schema_name(change)
        @changes[schema_identifier(schema, type)]
      end

      def save_to_files
        @changes.values.each(&:save_to_file)
      end

      def count
        @changes.keys.count
      end
      alias_method :size, :count

      def each(&block)
        @changes.values.each(&block)
      end

      private

      def schema_name(change)
        change.is_a?(Stepmod::Utils::Change) ? change.schema_name : change
      end

      def schema_identifier(schema_name, type)
        "#{schema_name}_#{type}"
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
stepmod-utils-0.4.14 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.13 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.12 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.11 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.10 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.9 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.8 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.7 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.6 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.5 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.2 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.1 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.4.0 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.37 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.36 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.35 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.34 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.33 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.32 lib/stepmod/utils/change_collection.rb
stepmod-utils-0.3.31 lib/stepmod/utils/change_collection.rb