Class: RubyHome::ServiceTemplate

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_home/factories/templates/service_template.rb

Constant Summary collapse

FILEPATH =
(File.dirname(__FILE__) + '/../../config/services.yml').freeze
DATA =
YAML.load_file(FILEPATH).freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, description:, uuid:, optional_characteristics_uuids:, required_characteristics_uuids:) ⇒ ServiceTemplate

Returns a new instance of ServiceTemplate.



20
21
22
23
24
25
26
# File 'lib/ruby_home/factories/templates/service_template.rb', line 20

def initialize(name:, description:, uuid:, optional_characteristics_uuids:, required_characteristics_uuids:)
  @name = name
  @description = description
  @uuid = uuid
  @optional_characteristics_uuids = optional_characteristics_uuids
  @required_characteristics_uuids = required_characteristics_uuids
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



28
29
30
# File 'lib/ruby_home/factories/templates/service_template.rb', line 28

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



28
29
30
# File 'lib/ruby_home/factories/templates/service_template.rb', line 28

def name
  @name
end

#optional_characteristics_uuidsObject (readonly)

Returns the value of attribute optional_characteristics_uuids.



28
29
30
# File 'lib/ruby_home/factories/templates/service_template.rb', line 28

def optional_characteristics_uuids
  @optional_characteristics_uuids
end

#required_characteristics_uuidsObject (readonly)

Returns the value of attribute required_characteristics_uuids.



28
29
30
# File 'lib/ruby_home/factories/templates/service_template.rb', line 28

def required_characteristics_uuids
  @required_characteristics_uuids
end

#uuidObject (readonly)

Returns the value of attribute uuid.



28
29
30
# File 'lib/ruby_home/factories/templates/service_template.rb', line 28

def uuid
  @uuid
end

Class Method Details

.allObject



8
9
10
# File 'lib/ruby_home/factories/templates/service_template.rb', line 8

def self.all
  @all ||= DATA.map { |data| new(data) }
end

.find_by(options) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/ruby_home/factories/templates/service_template.rb', line 12

def self.find_by(options)
  all.find do |characteristic|
    options.all? do |key, value|
      characteristic.send(key) == value
    end
  end
end

Instance Method Details

#optional_characteristicsObject



30
31
32
33
34
# File 'lib/ruby_home/factories/templates/service_template.rb', line 30

def optional_characteristics
  @optional_characteristics ||= optional_characteristics_uuids.map do |uuid|
    CharacteristicTemplate.find_by(uuid: uuid)
  end
end

#required_characteristicsObject



36
37
38
39
40
# File 'lib/ruby_home/factories/templates/service_template.rb', line 36

def required_characteristics
  @required_characteristics ||= required_characteristics_uuids.map do |uuid|
    CharacteristicTemplate.find_by(uuid: uuid)
  end
end

#to_hashObject



42
43
44
45
46
47
48
# File 'lib/ruby_home/factories/templates/service_template.rb', line 42

def to_hash
  {
    name: name,
    description: description,
    uuid: uuid
  }
end