evt-entity_cache 0.13.0.0 → 0.14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/entity_cache.rb +17 -15
- data/lib/entity_cache/controls.rb +12 -3
- data/lib/entity_cache/controls/entity.rb +27 -1
- data/lib/entity_cache/controls/persist_interval.rb +2 -22
- data/lib/entity_cache/controls/record.rb +33 -12
- data/lib/entity_cache/controls/storage/persistent.rb +8 -26
- data/lib/entity_cache/controls/storage/persistent/example.rb +41 -0
- data/lib/entity_cache/controls/storage/persistent/not_implemented.rb +19 -0
- data/lib/entity_cache/controls/storage/persistent/write.rb +25 -0
- data/lib/entity_cache/controls/storage/temporary.rb +14 -2
- data/lib/entity_cache/controls/subject.rb +2 -4
- data/lib/entity_cache/controls/time.rb +1 -12
- data/lib/entity_cache/controls/version.rb +5 -11
- data/lib/entity_cache/defaults.rb +2 -2
- data/lib/entity_cache/record.rb +36 -30
- data/lib/entity_cache/record/destructure.rb +29 -0
- data/lib/entity_cache/record/log_text.rb +9 -0
- data/lib/entity_cache/record/transformer.rb +26 -0
- data/lib/entity_cache/store/persistent/null.rb +15 -0
- data/lib/entity_cache/store/persistent/substitute.rb +64 -0
- data/lib/entity_cache/store/persistent/telemetry.rb +16 -0
- data/lib/entity_cache/store/temporary.rb +47 -0
- data/lib/entity_cache/store/temporary/build.rb +48 -0
- data/lib/entity_cache/store/temporary/build/defaults.rb +28 -0
- data/lib/entity_cache/{storage → store}/temporary/scope/exclusive.rb +1 -1
- data/lib/entity_cache/store/temporary/scope/global.rb +34 -0
- data/lib/entity_cache/store/temporary/scope/thread.rb +35 -0
- data/lib/entity_cache/store/temporary/substitute.rb +36 -0
- data/lib/entity_cache/substitute.rb +33 -17
- metadata +20 -58
- data/lib/entity_cache/entity_cache.rb +0 -83
- data/lib/entity_cache/error.rb +0 -3
- data/lib/entity_cache/storage/persistent.rb +0 -81
- data/lib/entity_cache/storage/persistent/none.rb +0 -15
- data/lib/entity_cache/storage/persistent/substitute.rb +0 -51
- data/lib/entity_cache/storage/persistent/telemetry.rb +0 -38
- data/lib/entity_cache/storage/temporary.rb +0 -56
- data/lib/entity_cache/storage/temporary/build.rb +0 -42
- data/lib/entity_cache/storage/temporary/scope/defaults.rb +0 -32
- data/lib/entity_cache/storage/temporary/scope/error.rb +0 -9
- data/lib/entity_cache/storage/temporary/scope/shared.rb +0 -31
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            class EntityCache
         | 
| 2 | 
            +
              module Store
         | 
| 3 | 
            +
                class Temporary
         | 
| 4 | 
            +
                  module Substitute
         | 
| 5 | 
            +
                    def self.build
         | 
| 6 | 
            +
                      Temporary.new
         | 
| 7 | 
            +
                    end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    class Temporary < Scope::Exclusive
         | 
| 10 | 
            +
                      def add(id, entity, version, time, persisted_version: nil, persisted_time: nil)
         | 
| 11 | 
            +
                        record = Record.build(
         | 
| 12 | 
            +
                          id,
         | 
| 13 | 
            +
                          entity,
         | 
| 14 | 
            +
                          version,
         | 
| 15 | 
            +
                          time,
         | 
| 16 | 
            +
                          persisted_version: persisted_version,
         | 
| 17 | 
            +
                          persisted_time: persisted_time
         | 
| 18 | 
            +
                        )
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                        put(record)
         | 
| 21 | 
            +
                      end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      def put?(record=nil)
         | 
| 24 | 
            +
                        if record.nil?
         | 
| 25 | 
            +
                          records.any?
         | 
| 26 | 
            +
                        else
         | 
| 27 | 
            +
                          records.any? do |_, r|
         | 
| 28 | 
            +
                            r == record
         | 
| 29 | 
            +
                          end
         | 
| 30 | 
            +
                        end
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
| @@ -5,40 +5,56 @@ class EntityCache | |
| 5 5 | 
             
                end
         | 
| 6 6 |  | 
| 7 7 | 
             
                class EntityCache < EntityCache
         | 
| 8 | 
            -
                  include Log::Dependency
         | 
| 9 | 
            -
             | 
| 10 8 | 
             
                  def self.build
         | 
| 11 9 | 
             
                    new
         | 
| 12 10 | 
             
                  end
         | 
| 13 11 |  | 
| 14 | 
            -
                  def add(id, entity, version=nil, persisted_version: nil)
         | 
| 12 | 
            +
                  def add(id, entity, version=nil, time: nil, persisted_version: nil, persisted_time: nil)
         | 
| 15 13 | 
             
                    version ||= 0
         | 
| 16 14 | 
             
                    persisted_version ||= version
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                     | 
| 19 | 
            -
             | 
| 20 | 
            -
                    record = Record. | 
| 15 | 
            +
                    time ||= clock.now
         | 
| 16 | 
            +
                    persisted_time ||= time
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    record = Record.build(
         | 
| 19 | 
            +
                      id,
         | 
| 20 | 
            +
                      entity,
         | 
| 21 | 
            +
                      version,
         | 
| 22 | 
            +
                      time,
         | 
| 23 | 
            +
                      persisted_version: persisted_version,
         | 
| 24 | 
            +
                      persisted_time: persisted_time
         | 
| 25 | 
            +
                    )
         | 
| 21 26 |  | 
| 22 27 | 
             
                    temporary_store.put(record)
         | 
| 23 28 | 
             
                  end
         | 
| 24 29 |  | 
| 25 | 
            -
                  def  | 
| 30 | 
            +
                  def put(id, entity, version, time: nil, persisted_version: nil, persisted_time: nil)
         | 
| 31 | 
            +
                    time ||= clock.now
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    record = Record.build(
         | 
| 34 | 
            +
                      id,
         | 
| 35 | 
            +
                      entity,
         | 
| 36 | 
            +
                      version,
         | 
| 37 | 
            +
                      time,
         | 
| 38 | 
            +
                      persisted_version: persisted_version,
         | 
| 39 | 
            +
                      persisted_time: persisted_time
         | 
| 40 | 
            +
                    )
         | 
| 41 | 
            +
             | 
| 26 42 | 
             
                    put_records << record
         | 
| 27 | 
            -
                  end
         | 
| 28 43 |  | 
| 29 | 
            -
             | 
| 30 | 
            -
                    @put_records ||= []
         | 
| 44 | 
            +
                    record
         | 
| 31 45 | 
             
                  end
         | 
| 32 46 |  | 
| 33 | 
            -
                   | 
| 34 | 
            -
                     | 
| 35 | 
            -
                      return put_records.any? if blk.nil?
         | 
| 47 | 
            +
                  def put?(&blk)
         | 
| 48 | 
            +
                    return put_records.any? if blk.nil?
         | 
| 36 49 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                      end
         | 
| 50 | 
            +
                    put_records.any? do |record|
         | 
| 51 | 
            +
                      blk.(record)
         | 
| 40 52 | 
             
                    end
         | 
| 41 53 | 
             
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  def put_records
         | 
| 56 | 
            +
                    @put_records ||= []
         | 
| 57 | 
            +
                  end
         | 
| 42 58 | 
             
                end
         | 
| 43 59 | 
             
              end
         | 
| 44 60 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: evt-entity_cache
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.14.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - The Eventide Project
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-07-07 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: evt-configure
         | 
| @@ -25,21 +25,7 @@ dependencies: | |
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name: evt- | 
| 29 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            -
                requirements:
         | 
| 31 | 
            -
                - - ">="
         | 
| 32 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '0'
         | 
| 34 | 
            -
              type: :runtime
         | 
| 35 | 
            -
              prerelease: false
         | 
| 36 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            -
                requirements:
         | 
| 38 | 
            -
                - - ">="
         | 
| 39 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '0'
         | 
| 41 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name: evt-identifier-uuid
         | 
| 28 | 
            +
              name: evt-message_store
         | 
| 43 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 30 | 
             
                requirements:
         | 
| 45 31 | 
             
                - - ">="
         | 
| @@ -80,34 +66,6 @@ dependencies: | |
| 80 66 | 
             
                - - ">="
         | 
| 81 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 68 | 
             
                    version: '0'
         | 
| 83 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name: evt-log
         | 
| 85 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            -
                requirements:
         | 
| 87 | 
            -
                - - ">="
         | 
| 88 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '0'
         | 
| 90 | 
            -
              type: :runtime
         | 
| 91 | 
            -
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            -
                requirements:
         | 
| 94 | 
            -
                - - ">="
         | 
| 95 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '0'
         | 
| 97 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name: evt-virtual
         | 
| 99 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            -
                requirements:
         | 
| 101 | 
            -
                - - ">="
         | 
| 102 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: '0'
         | 
| 104 | 
            -
              type: :runtime
         | 
| 105 | 
            -
              prerelease: false
         | 
| 106 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            -
                requirements:
         | 
| 108 | 
            -
                - - ">="
         | 
| 109 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: '0'
         | 
| 111 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 70 | 
             
              name: test_bench
         | 
| 113 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -135,25 +93,29 @@ files: | |
| 135 93 | 
             
            - lib/entity_cache/controls/persist_interval.rb
         | 
| 136 94 | 
             
            - lib/entity_cache/controls/record.rb
         | 
| 137 95 | 
             
            - lib/entity_cache/controls/storage/persistent.rb
         | 
| 96 | 
            +
            - lib/entity_cache/controls/storage/persistent/example.rb
         | 
| 97 | 
            +
            - lib/entity_cache/controls/storage/persistent/not_implemented.rb
         | 
| 98 | 
            +
            - lib/entity_cache/controls/storage/persistent/write.rb
         | 
| 138 99 | 
             
            - lib/entity_cache/controls/storage/temporary.rb
         | 
| 139 100 | 
             
            - lib/entity_cache/controls/subject.rb
         | 
| 140 101 | 
             
            - lib/entity_cache/controls/time.rb
         | 
| 141 102 | 
             
            - lib/entity_cache/controls/version.rb
         | 
| 142 103 | 
             
            - lib/entity_cache/defaults.rb
         | 
| 143 | 
            -
            - lib/entity_cache/entity_cache.rb
         | 
| 144 | 
            -
            - lib/entity_cache/error.rb
         | 
| 145 104 | 
             
            - lib/entity_cache/log.rb
         | 
| 146 105 | 
             
            - lib/entity_cache/record.rb
         | 
| 147 | 
            -
            - lib/entity_cache/ | 
| 148 | 
            -
            - lib/entity_cache/ | 
| 149 | 
            -
            - lib/entity_cache/ | 
| 150 | 
            -
            - lib/entity_cache/ | 
| 151 | 
            -
            - lib/entity_cache/ | 
| 152 | 
            -
            - lib/entity_cache/ | 
| 153 | 
            -
            - lib/entity_cache/ | 
| 154 | 
            -
            - lib/entity_cache/ | 
| 155 | 
            -
            - lib/entity_cache/ | 
| 156 | 
            -
            - lib/entity_cache/ | 
| 106 | 
            +
            - lib/entity_cache/record/destructure.rb
         | 
| 107 | 
            +
            - lib/entity_cache/record/log_text.rb
         | 
| 108 | 
            +
            - lib/entity_cache/record/transformer.rb
         | 
| 109 | 
            +
            - lib/entity_cache/store/persistent/null.rb
         | 
| 110 | 
            +
            - lib/entity_cache/store/persistent/substitute.rb
         | 
| 111 | 
            +
            - lib/entity_cache/store/persistent/telemetry.rb
         | 
| 112 | 
            +
            - lib/entity_cache/store/temporary.rb
         | 
| 113 | 
            +
            - lib/entity_cache/store/temporary/build.rb
         | 
| 114 | 
            +
            - lib/entity_cache/store/temporary/build/defaults.rb
         | 
| 115 | 
            +
            - lib/entity_cache/store/temporary/scope/exclusive.rb
         | 
| 116 | 
            +
            - lib/entity_cache/store/temporary/scope/global.rb
         | 
| 117 | 
            +
            - lib/entity_cache/store/temporary/scope/thread.rb
         | 
| 118 | 
            +
            - lib/entity_cache/store/temporary/substitute.rb
         | 
| 157 119 | 
             
            - lib/entity_cache/substitute.rb
         | 
| 158 120 | 
             
            homepage: https://github.com/eventide-project/entity-cache
         | 
| 159 121 | 
             
            licenses:
         | 
| @@ -167,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 167 129 | 
             
              requirements:
         | 
| 168 130 | 
             
              - - ">="
         | 
| 169 131 | 
             
                - !ruby/object:Gem::Version
         | 
| 170 | 
            -
                  version: 2.4 | 
| 132 | 
            +
                  version: '2.4'
         | 
| 171 133 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 172 134 | 
             
              requirements:
         | 
| 173 135 | 
             
              - - ">="
         | 
| @@ -1,83 +0,0 @@ | |
| 1 | 
            -
            class EntityCache
         | 
| 2 | 
            -
              include Log::Dependency
         | 
| 3 | 
            -
             | 
| 4 | 
            -
              configure :cache
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              attr_accessor :persist_interval
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              dependency :clock, Clock::UTC
         | 
| 9 | 
            -
              dependency :persistent_store, Storage::Persistent
         | 
| 10 | 
            -
              dependency :temporary_store, Storage::Temporary
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              def self.build(subject, scope: nil, persistent_store: nil, persist_interval: nil, session: nil)
         | 
| 13 | 
            -
                unless persistent_store.nil? == persist_interval.nil?
         | 
| 14 | 
            -
                  raise Error, "Must specify both the persistent store and persist interval, or neither"
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                persistent_store ||= Defaults.persistent_store
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                instance = new
         | 
| 20 | 
            -
                instance.persist_interval = persist_interval
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                Clock::UTC.configure instance
         | 
| 23 | 
            -
                Storage::Temporary.configure(instance, subject, scope: scope)
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                persistent_store.configure(instance, subject, session: session)
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                instance
         | 
| 28 | 
            -
              end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              def get(id)
         | 
| 31 | 
            -
                logger.trace { "Reading cache (ID: #{id.inspect})" }
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                record = temporary_store.get id
         | 
| 34 | 
            -
                record ||= restore id
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                if record.nil?
         | 
| 37 | 
            -
                  logger.info { "Cache miss (ID: #{id.inspect})" }
         | 
| 38 | 
            -
                  return nil
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                logger.info { "Cache hit (ID: #{id.inspect}, Entity Class: #{record.entity.class.name}, Version: #{record.version.inspect}, Time: #{record.time})" }
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                record
         | 
| 44 | 
            -
              end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              def put(id, entity, version, persisted_version=nil, persisted_time=nil, time: nil)
         | 
| 47 | 
            -
                time ||= clock.iso8601(precision: 5)
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                record = Record.new(id, entity, version, time, persisted_version, persisted_time)
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                put_record(record)
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                record
         | 
| 54 | 
            -
              end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
              def put_record(record)
         | 
| 57 | 
            -
                logger.trace { "Writing cache (ID: #{record.id}, Entity Class: #{record.entity.class.name}, Version: #{record.version.inspect}, Time: #{record.time}, Persistent Version: #{record.persisted_version.inspect}, Persistent Time: #{record.persisted_time.inspect})" }
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                if persist_interval && record.versions_since_persisted >= persist_interval
         | 
| 60 | 
            -
                  persisted_time = clock.iso8601(precision: 5)
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                  persistent_store.put record.id, record.entity, record.version, persisted_time
         | 
| 63 | 
            -
             | 
| 64 | 
            -
                  record.persisted_version = record.version
         | 
| 65 | 
            -
                  record.persisted_time = persisted_time
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
             | 
| 68 | 
            -
                logger.info { "Cache written (ID: #{record.id}, Entity Class: #{record.entity.class.name}, Version: #{record.version.inspect}, Time: #{record.time}, Persistent Version: #{record.persisted_version.inspect}, Persistent Time: #{record.persisted_time.inspect})" }
         | 
| 69 | 
            -
             | 
| 70 | 
            -
                temporary_store.put record
         | 
| 71 | 
            -
              end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
              def restore(id)
         | 
| 74 | 
            -
                entity, persisted_version, persisted_time = persistent_store.get(id)
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                return nil if entity.nil?
         | 
| 77 | 
            -
             | 
| 78 | 
            -
                version = persisted_version
         | 
| 79 | 
            -
                time = persisted_time
         | 
| 80 | 
            -
             | 
| 81 | 
            -
                put(id, entity, version, persisted_version, persisted_time, time: time)
         | 
| 82 | 
            -
              end
         | 
| 83 | 
            -
            end
         | 
    
        data/lib/entity_cache/error.rb
    DELETED
    
    
| @@ -1,81 +0,0 @@ | |
| 1 | 
            -
            class EntityCache
         | 
| 2 | 
            -
              module Storage
         | 
| 3 | 
            -
                module Persistent
         | 
| 4 | 
            -
                  Error = Class.new(RuntimeError)
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  extend Configure::Macro
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  def self.included(cls)
         | 
| 9 | 
            -
                    cls.class_exec do
         | 
| 10 | 
            -
                      include Log::Dependency
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                      configure :persistent_store
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                      dependency :telemetry, ::Telemetry
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                      extend Build
         | 
| 17 | 
            -
                      extend RegisterTelemetrySink
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                      prepend Get
         | 
| 20 | 
            -
                      prepend Put
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                      virtual :configure unless instance_methods.include?(:configure)
         | 
| 23 | 
            -
                      abstract :get unless instance_methods.include?(:get)
         | 
| 24 | 
            -
                      abstract :put unless instance_methods.include?(:put)
         | 
| 25 | 
            -
                    end
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  attr_reader :subject
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  def initialize(subject)
         | 
| 31 | 
            -
                    @subject = subject
         | 
| 32 | 
            -
                  end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  module Get
         | 
| 35 | 
            -
                    def get(id)
         | 
| 36 | 
            -
                      logger.trace { "Getting entity (ID: #{id.inspect})" }
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                      entity, version, time = super
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                      telemetry.record :get, Telemetry::Data.new(id, entity, version, time)
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                      logger.debug { "Got entity (ID: #{id.inspect}, Entity Class: #{entity.class.name}, Version: #{version.inspect}, Time: #{time.inspect})" }
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                      return entity, version, time
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
                  end
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                  module Put
         | 
| 49 | 
            -
                    def put(id, entity, version, time)
         | 
| 50 | 
            -
                      logger.trace { "Putting entity (ID: #{id.inspect}, Entity Class: #{entity.class.name}, Version: #{version.inspect}, Time: #{time.inspect})" }
         | 
| 51 | 
            -
             | 
| 52 | 
            -
                      res = super
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                      telemetry.record :put, Telemetry::Data.new(id, entity, version, time)
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                      logger.debug { "Put entity (ID: #{id.inspect}, Entity Class: #{entity.class.name}, Version: #{version.inspect}, Time: #{time.inspect})" }
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                      res
         | 
| 59 | 
            -
                    end
         | 
| 60 | 
            -
                  end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                  module Build
         | 
| 63 | 
            -
                    def build(subject, session: nil)
         | 
| 64 | 
            -
                      instance = new subject
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                      ::Telemetry.configure instance
         | 
| 67 | 
            -
                      instance.configure(session: session)
         | 
| 68 | 
            -
                      instance
         | 
| 69 | 
            -
                    end
         | 
| 70 | 
            -
                  end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                  module RegisterTelemetrySink
         | 
| 73 | 
            -
                    def register_telemetry_sink(storage)
         | 
| 74 | 
            -
                      sink = Telemetry.sink
         | 
| 75 | 
            -
                      storage.telemetry.register sink
         | 
| 76 | 
            -
                      sink
         | 
| 77 | 
            -
                    end
         | 
| 78 | 
            -
                  end
         | 
| 79 | 
            -
                end
         | 
| 80 | 
            -
              end
         | 
| 81 | 
            -
            end
         | 
| @@ -1,51 +0,0 @@ | |
| 1 | 
            -
            class EntityCache
         | 
| 2 | 
            -
              module Storage
         | 
| 3 | 
            -
                module Persistent
         | 
| 4 | 
            -
                  module Substitute
         | 
| 5 | 
            -
                    def self.build
         | 
| 6 | 
            -
                      substitute = Persistent.build :substitute
         | 
| 7 | 
            -
                      sink = Persistent.register_telemetry_sink substitute
         | 
| 8 | 
            -
                      substitute.sink = sink
         | 
| 9 | 
            -
                      substitute
         | 
| 10 | 
            -
                    end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                    class Persistent
         | 
| 13 | 
            -
                      attr_accessor :sink
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                      include Storage::Persistent
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                      def get(id)
         | 
| 18 | 
            -
                        entity, version, time = records[id]
         | 
| 19 | 
            -
                        return entity, version,time
         | 
| 20 | 
            -
                      end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                      def put(*)
         | 
| 23 | 
            -
                      end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                      def add(id, entity, version, time=nil)
         | 
| 26 | 
            -
                        time ||= Clock::UTC.iso8601(precision: 5)
         | 
| 27 | 
            -
                        records[id] ||= [entity, version, time]
         | 
| 28 | 
            -
                      end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                      def records
         | 
| 31 | 
            -
                        @records ||= {}
         | 
| 32 | 
            -
                      end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                      module Assertions
         | 
| 35 | 
            -
                        def retrieved?(&blk)
         | 
| 36 | 
            -
                          sink.retrieved? &blk
         | 
| 37 | 
            -
                        end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                        def stored?(&blk)
         | 
| 40 | 
            -
                          sink.stored? &blk
         | 
| 41 | 
            -
                        end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                        def stored_nothing?
         | 
| 44 | 
            -
                          sink.put_records.empty?
         | 
| 45 | 
            -
                        end
         | 
| 46 | 
            -
                      end
         | 
| 47 | 
            -
                    end
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
              end
         | 
| 51 | 
            -
            end
         |