class Teamtailor::Relationship

Attributes

included[R]
relation_name[R]
relationships[R]

Public Class Methods

new(relation_name, relationships = {}, included = {}) click to toggle source
# File lib/teamtailor/relationship.rb, line 5
def initialize(relation_name, relationships = {}, included = {})
  @relation_name = relation_name
  @relationships = relationships
  @included = included
end

Public Instance Methods

loaded?() click to toggle source
# File lib/teamtailor/relationship.rb, line 11
def loaded?
  !record_ids.empty?
end
records() click to toggle source
# File lib/teamtailor/relationship.rb, line 15
def records
  raise Teamtailor::UnloadedRelationError unless loaded?

  record_json = included.select do |k|
    record_ids.include?(k["id"]) && k["type"] == record_type
  end

  Teamtailor::Parser.parse({ "data" => record_json, "included" => included })
end

Private Instance Methods

record_ids() click to toggle source
# File lib/teamtailor/relationship.rb, line 27
def record_ids
  data = [relationships&.dig(relation_name, "data")].flatten.compact
  data.map { |row| row["id"] }
end
record_type() click to toggle source
# File lib/teamtailor/relationship.rb, line 32
def record_type
  data = [relationships&.dig(relation_name, "data")].flatten
  data.map { |row| row["type"] }.first
end