Farmbot-Web-App/app/mutations/devices/update.rb

47 lines
1.0 KiB
Ruby
Raw Normal View History

module Devices
class Update < Mutations::Command
2018-09-12 10:23:22 -06:00
BAD_TOOL_ID = "Can't mount to tool #%s because it does not exist."
required do
model :device, class: Device
end
optional do
string :name
string :timezone
time :last_saw_mq
2019-09-24 15:50:32 -06:00
time :last_ota
time :last_ota_checkup
2018-09-10 08:46:47 -06:00
integer :mounted_tool_id, nils: true
end
2018-09-12 10:23:22 -06:00
def validate
validate_tool_id if better_tool_id
end
def execute
2018-09-10 08:46:47 -06:00
p = inputs.except(:device).merge(mounted_tool_data)
device.update_attributes!(p)
device
end
2018-09-10 08:46:47 -06:00
private
2018-09-12 10:23:22 -06:00
def bad_tool_id
add_error :mounted_tool_id, :mounted_tool_id, BAD_TOOL_ID % better_tool_id
end
def validate_tool_id
bad_tool_id unless device.tools.pluck(:id).include?(better_tool_id)
end
2018-09-10 08:46:47 -06:00
def better_tool_id
2018-09-12 10:23:22 -06:00
@better_tool_id ||= ((mounted_tool_id || 0) > 0) ? mounted_tool_id : nil
2018-09-10 08:46:47 -06:00
end
def mounted_tool_data
mounted_tool_id_present? ? { mounted_tool_id: better_tool_id } : {}
2018-09-10 08:46:47 -06:00
end
end
end