Sha256: c94c9b3420b858e30e7269c8fab0c9f36f4707d9195c0b97cd374c97c0edecb3

Contents?: true

Size: 1.37 KB

Versions: 6

Compression:

Stored size: 1.37 KB

Contents

module Flexite
  class Diff
    class SyncShowService
      def initialize(stage, url)
        @stage = stage
        @remote_diff = Diff.new(url)
        @state_digest = Flexite.state_digest
      end

      def call
        response = Flexite.cache.read("#{@state_digest}-#{@stage}-show-diff")

        if response.nil?
          expire_old
          nodes = Config.t_nodes
          checksum = Digest::MD5.hexdigest(nodes.to_json)
          Flexite.cache.write("#{@state_digest}-#{@stage}-diff-checksum", checksum)
          response = @remote_diff.check({ token: Flexite.config.migration_token, tree: nodes, stage: Flexite.config.stagename, checksum: checksum })
          Flexite.cache.write("#{@state_digest}-#{@stage}-show-diff", response)
        end

        result(response)
      end

      protected

      def expire_old
        Flexite.cache.delete_matched(Flexite.match_key("-#{@stage}-show-diff"))
        Flexite.cache.delete_matched(Flexite.match_key("-#{@stage}-diff-checksum"))
      end

      def result(response)
        if response[:error].present?
          expire_old
          ActionService::Result.new(success: false, flash: { type: :danger, message: response[:error] }, endpoint: { partial: 'flexite/shared/show_flash' })
        else
          ActionService::Result.new(data: response[:diffs], endpoint: { action: :sync_show })
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
flexite-0.0.23 app/services/flexite/diff/sync_show_service.rb
flexite-0.0.22 app/services/flexite/diff/sync_show_service.rb
flexite-0.0.21 app/services/flexite/diff/sync_show_service.rb
flexite-0.0.20 app/services/flexite/diff/sync_show_service.rb
flexite-0.0.19 app/services/flexite/diff/sync_show_service.rb
flexite-0.0.18 app/services/flexite/diff/sync_show_service.rb