Class: Dina::BaseModel

Inherits:
JsonApiClient::Resource
  • Object
show all
Includes:
JsonApiClient::Helpers::Callbacks
Defined in:
lib/dina/models/base_model.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ BaseModel

Returns a new instance of BaseModel.



37
38
39
40
41
# File 'lib/dina/models/base_model.rb', line 37

def initialize(params = {})
  symbolized_params = params.transform_keys(&:to_sym)
  params["id"] = SecureRandom.uuid if !symbolized_params[:id]
  super
end

Class Method Details

.custom_headersObject

injects keybloak bearer token with all json_api_client calls



23
24
25
# File 'lib/dina/models/base_model.rb', line 23

def self.custom_headers
  { content_type: "application/vnd.api+json", authorization: Dina.header }
end

.endpoint_pathObject

Required by json_api_client Set by all child classes



13
14
# File 'lib/dina/models/base_model.rb', line 13

def self.endpoint_path
end

.find_by_group(group, page: 1, per: 50) ⇒ Object

helper method for all child classes to retrieve records by group



28
29
30
# File 'lib/dina/models/base_model.rb', line 28

def self.find_by_group(group, page: 1, per: 50)
  self.where("group.groupName": group).page(page).per(per)
end

.propertiesObject

helper method to retrieve all properties for a class



33
34
35
# File 'lib/dina/models/base_model.rb', line 33

def self.properties
  self.schema.instance_values["properties"]
end

.siteObject

Required by json_api_client

Raises:



17
18
19
20
# File 'lib/dina/models/base_model.rb', line 17

def self.site
  raise ConfigItemMissing, "Missing endpoint_url from config. Perhaps Dina.config has not yet been called." unless Dina.config.endpoint_url
  Dina.config.endpoint_url + "/" + endpoint_path
end

Instance Method Details

#set_multilingualDescription(opts = {}) ⇒ Object

Adds or updates a multilingualDescription with a language key

Parameters:

  • opts (Hash) (defaults to: {})

    the description expessed as { en: “My description” }



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/dina/models/base_model.rb', line 46

def set_multilingualDescription(opts = {})
  if self.respond_to?(:multilingualDescription)
    if self.multilingualDescription.nil?
      self.multilingualDescription = opts
    else
      descriptions = multilingualDescription["descriptions"]
      descriptions.delete_if{|o| o["lang"] == opts.keys[0].to_s}
      descriptions << { "lang" => opts.keys[0].to_s, "desc" => opts[opts.keys[0]] }
    end
  else
    raise PropertyInvalid, "#{self.class} does not have the property multilingualDescription"
  end
end

#set_multilingualTitle(opts = {}) ⇒ Object

Adds or updates a multilingualTitle with a language key

Parameters:

  • opts (Hash) (defaults to: {})

    the title expessed as { en: “My title” }



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/dina/models/base_model.rb', line 63

def set_multilingualTitle(opts = {})
  if self.respond_to?(:multilingualTitle)
    if self.multilingualTitle.nil?
      self.multilingualTitle = opts
    else
      titles = multilingualTitle["titles"]
      titles.delete_if{|o| o["lang"] == opts.keys[0].to_s}
      titles << { "lang" => opts.keys[0].to_s, "title" => opts[opts.keys[0]] }
    end
  else
    raise PropertyInvalid, "#{self.class} does not have the property multilingualTitle"
  end
end