Class: Mozaik::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/mozaik/service.rb,
lib/mozaik/service/types.rb,
lib/mozaik/service/errors.rb,
lib/mozaik/service/result.rb,
lib/mozaik/service/failure.rb,
lib/mozaik/service/version.rb,
lib/mozaik/service/attribute_value.rb

Defined Under Namespace

Modules: Types Classes: AttributeValue, Errors, Failure, Halt, Result

Constant Summary collapse

VERSION =
'1.0.1'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Service

Returns a new instance of Service.



53
54
55
56
57
# File 'lib/mozaik/service.rb', line 53

def initialize(attributes = {})
  initialize_errors
  initialize_inputs(attributes)
  initialize_attributes
end

Class Method Details

.attribute(name, type:, required: false, default: nil) ⇒ Object



21
22
23
24
# File 'lib/mozaik/service.rb', line 21

def self.attribute(name, type:, required: false, default: nil)
  @attributes ||= {}
  @attributes[name] = { type: type, required: required, default: default }
end

.attributesObject



26
27
28
# File 'lib/mozaik/service.rb', line 26

def self.attributes
  @attributes || {}
end

.attributes_namesObject



30
31
32
# File 'lib/mozaik/service.rb', line 30

def self.attributes_names
  attributes.keys
end

.run(attributes = {}) ⇒ Object



42
43
44
# File 'lib/mozaik/service.rb', line 42

def self.run(attributes = {})
  new(attributes).run
end

.run!(attributes = {}) ⇒ Object

Raises:



46
47
48
49
50
51
# File 'lib/mozaik/service.rb', line 46

def self.run!(attributes = {})
  outcome = run(attributes)
  raise Failure, outcome.errors unless outcome.success?

  outcome.result
end

.validate(method, *args) ⇒ Object



38
39
40
# File 'lib/mozaik/service.rb', line 38

def self.validate(method, *args)
  validations.push([method, args]) unless validations.include?([method, args])
end

.validationsObject



34
35
36
# File 'lib/mozaik/service.rb', line 34

def self.validations
  @validations ||= []
end

Instance Method Details

#runObject



59
60
61
62
63
64
65
66
67
68
# File 'lib/mozaik/service.rb', line 59

def run
  halt! unless valid?
  validate
  halt! unless valid?
  result = perform
  halt! unless valid?
  return_success(result)
rescue Halt
  return_failure(@errors)
end