Sha256: 75f53224e588be6e6bd542fd6496fba2d0ef47fb5a80309a3ac0972734747b9a

Contents?: true

Size: 704 Bytes

Versions: 27

Compression:

Stored size: 704 Bytes

Contents

module Tessa
  class AssetChange
    include Virtus.model

    attribute :id, Integer
    attribute :action, String

    def initialize(args={})
      case args
      when Array
        id, attributes = args
        super attributes.merge(id: id)
      else
        super
      end
    end

    def apply
      if add?
        asset.complete!
      elsif remove?
        asset.delete!
      end
    end

    def hash
      [id, action].hash
    end

    def eql?(b)
      self.class == b.class &&
        self.hash == b.hash
    end

    def add?
      action == 'add'
    end

    def remove?
      action == 'remove'
    end

    private

    def asset
      Tessa::Asset.new(id: id)
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
tessa-1.2.3 lib/tessa/asset_change.rb
tessa-1.2.2 lib/tessa/asset_change.rb
tessa-2.0 lib/tessa/asset_change.rb
tessa-1.2.1 lib/tessa/asset_change.rb
tessa-1.2.0 lib/tessa/asset_change.rb
tessa-1.1.1 lib/tessa/asset_change.rb
tessa-1.1.0 lib/tessa/asset_change.rb
tessa-1.0.2 lib/tessa/asset_change.rb
tessa-1.0.1 lib/tessa/asset_change.rb
tessa-1.0.0 lib/tessa/asset_change.rb
tessa-1.0.0.pre.rc3 lib/tessa/asset_change.rb
tessa-1.0.0.pre.rc2 lib/tessa/asset_change.rb
tessa-1.0.0.pre.rc1 lib/tessa/asset_change.rb
tessa-0.9.2 lib/tessa/asset_change.rb
tessa-0.9.1 lib/tessa/asset_change.rb
tessa-0.9.0 lib/tessa/asset_change.rb
tessa-0.8.0 lib/tessa/asset_change.rb
tessa-0.7.0 lib/tessa/asset_change.rb
tessa-0.6.3 lib/tessa/asset_change.rb
tessa-0.6.2 lib/tessa/asset_change.rb