Module: ForestLiana::Utils::CompositePrimaryKeyHelper

Defined in:
app/services/forest_liana/utils/composite_primary_key_helper.rb

Class Method Summary collapse

Class Method Details

.find_record(scoped_records, resource, id) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'app/services/forest_liana/utils/composite_primary_key_helper.rb', line 4

def self.find_record(scoped_records, resource, id)
  primary_key = resource.primary_key

  if primary_key.is_a?(Array)
    id_values = parse_composite_id(id)
    conditions = primary_key.zip(id_values).to_h
    scoped_records.find_by(conditions)
  else
    scoped_records.find(id)
  end
end

.parse_composite_id(id) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'app/services/forest_liana/utils/composite_primary_key_helper.rb', line 16

def self.parse_composite_id(id)
  return id if id.is_a?(Array)

  if id.to_s.start_with?('[') && id.to_s.end_with?(']')
    JSON.parse(id.to_s)
  else
    raise ForestLiana::Errors::HTTP422Error.new("Composite primary key ID must be in format [value1,value2], received: #{id}")
  end
end