class EntitySnapshot::Postgres
Constants
- Error
Attributes
session[RW]
Public Class Methods
assure(store)
click to toggle source
# File lib/entity_snapshot/postgres/postgres.rb, line 58 def self.assure(store) if [store.snapshot_class, store.snapshot_interval].include?(nil) raise EntityCache::Store::External::Error end end
Public Instance Methods
category()
click to toggle source
# File lib/entity_snapshot/postgres/postgres.rb, line 15 def category StreamName.category(entity_class, specifier) end
configure(session: nil)
click to toggle source
# File lib/entity_snapshot/postgres/postgres.rb, line 19 def configure(session: nil) MessageStore::Postgres::Session.configure(self, session: session) MessageStore::Postgres::Put.configure(self, session: self.session, attr_name: :write) MessageStore::Postgres::Get::Stream::Last.configure(self, session: self.session, attr_name: :read) end
put(id, entity, version, time)
click to toggle source
# File lib/entity_snapshot/postgres/postgres.rb, line 25 def put(id, entity, version, time) unless entity.is_a?(entity_class) error_msg = "Persistent storage for #{entity_class} cannot store #{entity}" logger.error() { error_msg } raise Error, error_msg end stream_name = snapshot_stream_name(id) logger.trace(tags: [:cache, :put]) { "Writing snapshot (Stream: #{stream_name.inspect}, Entity Class: #{entity.class.name}, Version: #{version.inspect}, Time: #{time.utc.iso8601(3)})" } entity_data = Transform::Write.raw_data(entity) event_data = MessageStore::MessageData::Write.new iso8601_time = Clock::UTC.iso8601(time) data = { entity_data: entity_data, entity_version: version, time: iso8601_time } event_data.type = 'Recorded' event_data.data = data position = write.(event_data, stream_name) logger.debug(tags: [:cache, :put]) { "Wrote snapshot (Stream: #{stream_name.inspect}, Entity Class: #{entity.class.name}, Version: #{version.inspect}, Time: #{time.utc.iso8601(3)})" } position end