Class: Hyrax::LeaseManager
- Inherits:
-
Object
- Object
- Hyrax::LeaseManager
show all
- Defined in:
- app/services/hyrax/lease_manager.rb
Overview
Provides utilities for managing the lifecycle of an ‘Hyrax::Lease` on a `Hyrax::Resource`.
Defined Under Namespace
Classes: NotEnforcableError, NotReleasableError
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(resource:, query_service: Hyrax.query_service) ⇒ LeaseManager
Returns a new instance of LeaseManager.
20
21
22
23
|
# File 'app/services/hyrax/lease_manager.rb', line 20
def initialize(resource:, query_service: Hyrax.query_service)
@query_service = query_service
self.resource = resource
end
|
Instance Attribute Details
#query_service ⇒ Object
Returns the value of attribute query_service.
16
17
18
|
# File 'app/services/hyrax/lease_manager.rb', line 16
def query_service
@query_service
end
|
11
12
13
|
# File 'app/services/hyrax/lease_manager.rb', line 11
def resource
@resource
end
|
Class Method Details
.apply_lease_for(resource:, query_service: Hyrax.query_service) ⇒ Object
26
27
28
29
|
# File 'app/services/hyrax/lease_manager.rb', line 26
def apply_lease_for(resource:, query_service: Hyrax.query_service)
new(resource: resource, query_service: query_service)
.apply
end
|
.apply_lease_for!(resource:, query_service: Hyrax.query_service) ⇒ Object
31
32
33
34
|
# File 'app/services/hyrax/lease_manager.rb', line 31
def apply_lease_for!(resource:, query_service: Hyrax.query_service)
new(resource: resource, query_service: query_service)
.apply!
end
|
.lease_for(resource:, query_service: Hyrax.query_service) ⇒ Object
36
37
38
39
|
# File 'app/services/hyrax/lease_manager.rb', line 36
def lease_for(resource:, query_service: Hyrax.query_service)
new(resource: resource, query_service: query_service)
.lease
end
|
.release_lease_for(resource:, query_service: Hyrax.query_service) ⇒ Object
41
42
43
44
|
# File 'app/services/hyrax/lease_manager.rb', line 41
def release_lease_for(resource:, query_service: Hyrax.query_service)
new(resource: resource, query_service: query_service)
.release
end
|
.release_lease_for!(resource:, query_service: Hyrax.query_service) ⇒ Object
46
47
48
49
|
# File 'app/services/hyrax/lease_manager.rb', line 46
def release_lease_for!(resource:, query_service: Hyrax.query_service)
new(resource: resource, query_service: query_service)
.release!
end
|
Instance Method Details
#apply ⇒ Boolean
67
68
69
70
71
|
# File 'app/services/hyrax/lease_manager.rb', line 67
def apply
return false unless under_lease?
resource.visibility = lease.visibility_during_lease
end
|
#apply! ⇒ void
This method returns an undefined value.
76
77
78
|
# File 'app/services/hyrax/lease_manager.rb', line 76
def apply!
apply || raise(NotEnforcableError)
end
|
#copy_lease_to(target:) ⇒ Boolean
Copies and applies the lease to a new (target) resource.
58
59
60
61
62
63
|
# File 'app/services/hyrax/lease_manager.rb', line 58
def copy_lease_to(target:)
return false unless under_lease?
target.lease = Lease.new(clone_attributes)
self.class.apply_lease_for(resource: target)
end
|
#enforced? ⇒ Boolean
82
83
84
|
# File 'app/services/hyrax/lease_manager.rb', line 82
def enforced?
lease.visibility_during_lease.to_s == resource.visibility
end
|
88
89
90
|
# File 'app/services/hyrax/lease_manager.rb', line 88
def lease
resource.lease || Lease.new
end
|
#nullify ⇒ void
This method returns an undefined value.
Drop the lease by setting its release date to ‘nil`.
96
97
98
99
|
# File 'app/services/hyrax/lease_manager.rb', line 96
def nullify
return unless under_lease?
lease.lease_expiration_date = nil
end
|
#release ⇒ Boolean
103
104
105
106
107
108
|
# File 'app/services/hyrax/lease_manager.rb', line 103
def release
return false if under_lease?
return true if lease.visibility_after_lease.nil?
resource.visibility = lease.visibility_after_lease
end
|
#release! ⇒ void
This method returns an undefined value.
112
113
114
|
# File 'app/services/hyrax/lease_manager.rb', line 112
def release!
release || raise(NotReleasableError)
end
|
#under_lease? ⇒ Boolean
118
119
120
|
# File 'app/services/hyrax/lease_manager.rb', line 118
def under_lease?
lease.active?
end
|