Sha256: 27ab48fb226aac865f26bf3485b44237e1cf7dabae334e53fc3cdff035c98b27

Contents?: true

Size: 1.04 KB

Versions: 48

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true
module Valkyrie::Persistence
  class OptimisticLockToken
    attr_reader :adapter_id, :token

    # @param [Valkyrie::ID] adapter_id
    # @param [String, Integer] token for the adapter
    def initialize(adapter_id:, token:)
      @adapter_id = adapter_id
      @token = token
    end

    # Serializing lock tokens makes them easy to cast to strings and back.
    # Primary use case is for embedding one in a form as a hidden field
    def serialize
      "lock_token:#{adapter_id}:#{token}"
    end
    alias to_s serialize

    def ==(other)
      return false unless other.is_a?(self.class)
      return false unless adapter_id == other.adapter_id
      token == other.token
    end

    # Deserializing lock tokens means that we can then use the adapter id and the lock token value
    def self.deserialize(serialized_token)
      token_parts = serialized_token.to_s.split(":", 3)
      adapter_id = token_parts[1]
      token = token_parts[2]
      new(adapter_id: Valkyrie::ID.new(adapter_id), token: token)
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
valkyrie-3.5.0 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.4.0 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.3.0 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.1.5 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.1.4 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.1.3 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.1.2 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.1.1 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.1.0 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.3 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.2 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.1 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.0 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.0.pre.rc.1 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.0.pre.beta.3 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.0.pre.beta.2 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-3.0.0.pre.beta.1 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-2.2.0 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-2.1.2 lib/valkyrie/persistence/optimistic_lock_token.rb
valkyrie-2.1.1 lib/valkyrie/persistence/optimistic_lock_token.rb