Class: Gitlab::CloudConnector::DataModel::Base

Inherits:
Object
  • Object
show all
Extended by:
Enumerable
Includes:
Associations
Defined in:
lib/gitlab/cloud_connector/data_model/base.rb

Direct Known Subclasses

AddOn, BackendService, LicenseType, Service, UnitPrimitive

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Associations

included

Constructor Details

#initialize(**opts) ⇒ Base

Returns a new instance of Base.



40
41
42
43
44
45
46
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 40

def initialize(**opts)
  opts.each do |key, value|
    raise ArgumentError, "Cannot override association '#{key}'" if association_key?(key)

    instance_variable_set(:"@#{key}", value)
  end
end

Class Method Details

.allObject



25
26
27
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 25

def all
  name_index.values.uniq
end

.each(&block) ⇒ Object



17
18
19
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 17

def each(&block)
  all.each(&block)
end

.find_by_name(name) ⇒ Object



21
22
23
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 21

def find_by_name(name)
  name_index[name.to_sym]
end

.model_nameObject



13
14
15
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 13

def model_name
  name&.demodulize
end

Instance Method Details

#[](name) ⇒ Object



48
49
50
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 48

def [](name)
  instance_variable_get(:"@#{name}")
end

#association_key?(key) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 52

def association_key?(key)
  self.class.association_cache_keys.include?(key.to_sym)
end

#to_hashObject



56
57
58
59
60
61
62
# File 'lib/gitlab/cloud_connector/data_model/base.rb', line 56

def to_hash
  instance_variables.each_with_object({}) do |var, hash|
    key = var.to_s.delete('@').to_sym

    hash[key] = instance_variable_get(var) unless association_key?(key)
  end
end