Sha256: 86267c818e25fd6d530caf89b9380a79576fc8b187ae08af0e15bd882f4352bb
Contents?: true
Size: 1.52 KB
Versions: 2
Compression:
Stored size: 1.52 KB
Contents
# frozen_string_literal: true module Hyrax class LeaseManager ## # @!attribute [rw] resource # @return [Hyrax::Resource] attr_accessor :resource ## # @!attribute [r] query_service # @return [#find_by] attr_reader :query_service ## # @param resource [Hyrax::Resource] def initialize(resource:, query_service: Hyrax.query_service) @query_service = query_service self.resource = resource end class << self def apply_lease_for(resource:, query_service: Hyrax.query_service) new(resource: resource, query_service: query_service) .apply end def lease_for(resource:, query_service: Hyrax.query_service) new(resource: resource, query_service: query_service) .lease end end def copy_lease_to(target:) return false unless under_lease? target.lease = Lease.new(clone_attributes) self.class.apply_lease_for(resource: target) end ## # @return [Boolean] def apply return false unless under_lease? resource.visibility = lease.visibility_during_lease end ## # @return [Valkyrie::Resource] def lease resource.lease || Lease.new end ## # @return [Boolean] def under_lease? lease.active? end private def clone_attributes lease.attributes.slice(*core_attribute_keys) end def core_attribute_keys [:visibility_after_lease, :visibility_during_lease, :lease_expiration_date] end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
hyrax-3.0.0.pre.rc1 | app/services/hyrax/lease_manager.rb |
hyrax-3.0.0.pre.beta3 | app/services/hyrax/lease_manager.rb |