Class: SolidObjects::ActorSnapshot
- Inherits:
-
Object
- Object
- SolidObjects::ActorSnapshot
- Defined in:
- lib/solid_objects/actor_snapshot.rb,
sig/generated/lib/solid_objects/actor_snapshot.rbs
Instance Attribute Summary collapse
- #actor ⇒ Object readonly
- #actor_class ⇒ Object readonly
-
#instance ⇒ Object
readonly
Returns the value of attribute instance.
- #instance_id ⇒ Object readonly
- #reference ⇒ Object readonly
- #revision ⇒ Object readonly
Instance Method Summary collapse
- #build_actor ⇒ Actor
-
#initialize(reference) ⇒ ActorSnapshot
constructor
A new instance of ActorSnapshot.
- #observable_value(name) ⇒ Object
- #observable_values ⇒ Hash[String, untyped]
Constructor Details
#initialize(reference) ⇒ ActorSnapshot
Returns a new instance of ActorSnapshot.
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/solid_objects/actor_snapshot.rb', line 16 def initialize(reference) @reference = reference @actor_class = SolidObjects.registry.fetch(reference.actor_type) @instance = Instance.find_by( actor_type: reference.actor_type, actor_id: reference.actor_id ) @instance_id = @instance&.id || 0 @revision = @instance&.state_revision || 0 @actor = build_actor @observable_values = nil @observable_value_cache = {} end |
Instance Attribute Details
#actor ⇒ Object (readonly)
13 14 15 |
# File 'lib/solid_objects/actor_snapshot.rb', line 13 def actor @actor end |
#actor_class ⇒ Object (readonly)
13 14 15 |
# File 'lib/solid_objects/actor_snapshot.rb', line 13 def actor_class @actor_class end |
#instance ⇒ Object (readonly)
Returns the value of attribute instance.
46 47 48 |
# File 'lib/solid_objects/actor_snapshot.rb', line 46 def instance @instance end |
#instance_id ⇒ Object (readonly)
13 14 15 |
# File 'lib/solid_objects/actor_snapshot.rb', line 13 def instance_id @instance_id end |
#reference ⇒ Object (readonly)
13 14 15 |
# File 'lib/solid_objects/actor_snapshot.rb', line 13 def reference @reference end |
#revision ⇒ Object (readonly)
13 14 15 |
# File 'lib/solid_objects/actor_snapshot.rb', line 13 def revision @revision end |
Instance Method Details
#build_actor ⇒ Actor
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/solid_objects/actor_snapshot.rb', line 49 def build_actor state_version = instance&.state_version || actor_class.state_version state_data = ApplicationWriteGuard.call( actor_type: reference.actor_type, actor_id: reference.actor_id, operation: "state_migration" ) do actor_class.definition.migrate_state( state_version, instance&.state || {} ) end actor_class.new( actor_id: reference.actor_id, state: State.new(actor_class.definition.state_definition, state_data) ) end |
#observable_value(name) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/solid_objects/actor_snapshot.rb', line 36 def observable_value(name) observable_name = name.to_s return @observable_value_cache.fetch(observable_name) if @observable_value_cache.key?(observable_name) @observable_value_cache[observable_name] = Serialization.readonly_copy(actor.observable_value(observable_name)) end |
#observable_values ⇒ Hash[String, untyped]
31 32 33 |
# File 'lib/solid_objects/actor_snapshot.rb', line 31 def observable_values @observable_values ||= Serialization.readonly_copy(actor.observable_values) end |