Add Tool, ToolSlot and ToolBay models to the sync object
parent
66e48770e0
commit
a99d0c9ff4
|
@ -7,6 +7,7 @@ class Device < ActiveRecord::Base
|
|||
has_many :regimens, dependent: :destroy
|
||||
has_many :plants, dependent: :destroy
|
||||
has_many :peripherals, dependent: :destroy
|
||||
has_many :tool_bays, dependent: :destroy
|
||||
has_one :planting_area, dependent: :destroy
|
||||
|
||||
validates_uniqueness_of :name
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
class Tool < ApplicationRecord
|
||||
belongs_to :ToolSlot
|
||||
belongs_to :tool_slot
|
||||
end
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
class ToolBay < ApplicationRecord
|
||||
belongs_to :device
|
||||
has_many :tool_slots, dependent: :destroy
|
||||
end
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
class ToolSlot < ApplicationRecord
|
||||
belongs_to :ToolBay
|
||||
belongs_to :tool_bay
|
||||
has_many :tools
|
||||
end
|
||||
|
|
|
@ -8,19 +8,61 @@ module Sync
|
|||
end
|
||||
|
||||
def execute
|
||||
regimens = device.regimens;
|
||||
message = {
|
||||
api_version: API_VERSION[0,7],
|
||||
compat_num: COMPAT_NUM,
|
||||
device: device,
|
||||
users: device.users,
|
||||
sequences: device.sequences,
|
||||
regimens: regimens,
|
||||
peripherals: device.peripherals,
|
||||
regimen_items: RegimenItem.where(regimen_id: regimens.pluck(:id)),
|
||||
plants: device.plants
|
||||
return {
|
||||
api_version: API_VERSION[0,7],
|
||||
compat_num: COMPAT_NUM,
|
||||
device: device,
|
||||
users: users,
|
||||
sequences: sequences,
|
||||
regimens: regimens,
|
||||
peripherals: peripherals,
|
||||
regimen_items: regimen_items,
|
||||
plants: plants,
|
||||
tool_bays: tool_bays,
|
||||
tool_slots: tool_slots,
|
||||
tools: tools
|
||||
}.as_json
|
||||
message
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def tools
|
||||
# Eager load Tools,slots and bays for performance
|
||||
@tools = Tool
|
||||
.includes(tool_slot: :tool_bay)
|
||||
.where(tool_slot: {tool_bays: {device_id: Device.last.id}})
|
||||
end
|
||||
|
||||
def tool_bays
|
||||
@tool_bays ||= tool_slots.map(&:tool_bay)
|
||||
end
|
||||
|
||||
def tool_slots
|
||||
@tool_slots ||= tools.map(&:tool_slot)
|
||||
end
|
||||
|
||||
def plants
|
||||
@plants ||= device.plants
|
||||
end
|
||||
|
||||
def regimen_items
|
||||
@regimen_items ||= RegimenItem.where(regimen_id: regimens.pluck(:id))
|
||||
end
|
||||
|
||||
def peripherals
|
||||
@peripherals ||= device.peripherals
|
||||
end
|
||||
|
||||
def regimens
|
||||
@regimens ||= device.regimens;
|
||||
end
|
||||
|
||||
def sequences
|
||||
@sequences ||= device.sequences
|
||||
end
|
||||
|
||||
def users
|
||||
@users = device.users
|
||||
end
|
||||
end
|
||||
end
|
|
@ -3,9 +3,7 @@ require 'securerandom'
|
|||
|
||||
FactoryGirl.define do
|
||||
factory :device do
|
||||
name {
|
||||
Haikunator.haikunate(1000)
|
||||
}
|
||||
name { Haikunator.haikunate(1000) }
|
||||
webcam_url { Faker::Company.logo }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
FactoryGirl.define do
|
||||
factory :tool_bay do
|
||||
name "MyString"
|
||||
device
|
||||
name "Example Tool Bay"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
FactoryGirl.define do
|
||||
factory :tool_slot do
|
||||
ToolBay nil
|
||||
name "MyString"
|
||||
tool_bay
|
||||
name "Example Tool Slot"
|
||||
x 1
|
||||
y 1
|
||||
z 1
|
||||
y 2
|
||||
z 3
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
FactoryGirl.define do
|
||||
factory :tool do
|
||||
ToolSlot nil
|
||||
tool_slot
|
||||
name "MyString"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue