class HecksApplication

The Applicaiton port. Adapters usually talk to the domain through HecksApplication

Attributes

database[R]
domain_spec[R]
events_port[R]
validator[R]

Public Class Methods

new(database: nil, listeners: [], domain:, validator: HecksApplication::Validator) click to toggle source
# File lib/hecks-application.rb, line 18
def initialize(database: nil, listeners: [], domain:, validator: HecksApplication::Validator)
  load(domain.spec_path)
  @domain      = domain
  @database    = database
  @events_port = HecksEvents.new(listeners: listeners)
  @domain_spec = DOMAIN
  @validator   = validator
end

Public Instance Methods

[](module_name) click to toggle source
# File lib/hecks-application.rb, line 36
def [](module_name)
  Commands::CRUDHandler.new(
    module_name: module_name,
    application: self,
    validator:   validator
  )
end
call(command_name:, module_name:, args: {}) click to toggle source
# File lib/hecks-application.rb, line 27
def call(command_name:, module_name:, args: {})
  CommandRunner.new(
    command_name: command_name,
    module_name:  module_name,
    args:         args,
    application:  self
  ).call
end
query(query_name:, module_name:, args: {}) click to toggle source
# File lib/hecks-application.rb, line 44
def query(query_name:, module_name:, args: {})
  QueryRunner.new(
    module_name: module_name,
    query_name:  query_name,
    args:        args,
    application: self
  ).call
end