Class: Light::Services::Messages

Inherits:
Object
  • Object
show all
Defined in:
lib/light/services/messages.rb

Instance Method Summary collapse

Constructor Details

#initializeMessages

Returns a new instance of Messages.



6
7
8
# File 'lib/light/services/messages.rb', line 6

def initialize
  @storage = {}
end

Instance Method Details

#add(key, message, rollback: true) ⇒ Object



10
11
12
13
14
15
# File 'lib/light/services/messages.rb', line 10

def add(key, message, rollback: true)
  storage[key] ||= []
  storage[key] << message

  rollback! if rollback
end

#any?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/light/services/messages.rb', line 47

def any?
  !blank?
end

#blank?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/light/services/messages.rb', line 43

def blank?
  storage.empty?
end

#delete(key) ⇒ Object



39
40
41
# File 'lib/light/services/messages.rb', line 39

def delete(key)
  storage.delete(key)
end

#eachObject



63
64
65
66
67
# File 'lib/light/services/messages.rb', line 63

def each
  flatten.each do |key, message|
    yield key, message
  end
end

#flattenObject



55
56
57
58
59
60
61
# File 'lib/light/services/messages.rb', line 55

def flatten
  to_hash.flat_map do |key, messages|
    messages.map do |message|
      [key, message]
    end
  end
end

#from_record(record, rollback: true) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/light/services/messages.rb', line 17

def from_record(record, rollback: true)
  return unless record.errors.any?

  record.errors.messages.each do |key, messages|
    messages.each do |message|
      add(key, message, rollback: false)
    end
  end

  rollback! if rollback
end

#from_service(service, rollback: true) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/light/services/messages.rb', line 29

def from_service(service, rollback: true)
  return unless service.errors.any?

  service.errors.each do |key, message|
    add(key, message, rollback: false)
  end

  rollback! if rollback
end

#to_hashObject Also known as: to_h



51
52
53
# File 'lib/light/services/messages.rb', line 51

def to_hash
  storage
end