Module: Hecks::Ports::Persistence

Defined in:
lib/hecks/ports/persistence.rb,
lib/hecks/ports/persistence.rb,
lib/hecks/ports/persistence/lineage.rb,
lib/hecks/ports/persistence/execution.rb,
lib/hecks/ports/persistence/append_only.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

Defined Under Namespace

Modules: BindingPolicy, 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

.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