Module: Hecks::Ports::Persistence

Defined in:
lib/hecks/ports/persistence.rb,
lib/hecks/ports/persistence.rb,
lib/hecks/ports/persistence/plugin.rb,
lib/hecks/ports/persistence/execution.rb,
lib/hecks/ports/persistence/append_only.rb,
lib/hecks/ports/persistence/plugins/era.rb,
lib/hecks/ports/persistence/binding_policy.rb,
lib/hecks/ports/persistence/remote_runtime.rb,
lib/hecks/ports/persistence/null_saga_store.rb,
lib/hecks/ports/persistence/repository_factory.rb,
lib/hecks/ports/persistence/plugins/era/lineage.rb

Defined Under Namespace

Modules: BindingPolicy, Plugin, Plugins, RemoteRuntime, RepositoryFactory Classes: AppendOnly, Entry, Lineage, NullSagaStore, Outcome

Constant Summary collapse

NAME =
"persistence"
VERB =
"persisted_by"
DEFAULT_ADAPTER =
"Memory"
NULL_SAGA_STORE =
NullSagaStore.new

Class Method Summary collapse

Class Method Details

.bind_for(registry, domain, aggregate) ⇒ Object



34
35
36
# File 'lib/hecks/ports/persistence.rb', line 34

def bind_for(registry, domain, aggregate)
  binds_for(registry, domain, aggregate).first
end

.binds_for(registry, domain, aggregate) ⇒ Object



30
31
32
# File 'lib/hecks/ports/persistence.rb', line 30

def binds_for(registry, domain, aggregate)
  [BindingPolicy.resolve(registry, domain, aggregate), []]
end

.each_pluginObject



50
# File 'lib/hecks/ports/persistence/plugin.rb', line 50

def each_plugin(&) = Plugin.each(&)

.plugin?(name) ⇒ Boolean

Returns:

  • (Boolean)


49
# File 'lib/hecks/ports/persistence/plugin.rb', line 49

def plugin?(name) = Plugin.registered?(name)

.plugins_loaded?Boolean

Returns:

  • (Boolean)


51
# File 'lib/hecks/ports/persistence/plugin.rb', line 51

def plugins_loaded? = Plugin.any?

.register_plugin(name, plugin) ⇒ Object



48
# File 'lib/hecks/ports/persistence/plugin.rb', line 48

def register_plugin(name, plugin) = Plugin.register(name, plugin)

.repository(registry, domain, aggregate) ⇒ Object

The public persistence port owns only authoritative aggregate heads.



25
26
27
28
# File 'lib/hecks/ports/persistence.rb', line 25

def repository(registry, domain, aggregate)
  authoritative = BindingPolicy.resolve(registry, domain, aggregate)
  RepositoryFactory.build(registry, domain, aggregate, authoritative)
end