Add Tool, ToolSlot and ToolBay models to the sync object

pull/300/head
Rick Carlino 2016-11-29 13:00:30 -06:00
parent 66e48770e0
commit a99d0c9ff4
9 changed files with 68 additions and 23 deletions

View File

@ -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

View File

@ -1,3 +1,3 @@
class Tool < ApplicationRecord
belongs_to :ToolSlot
belongs_to :tool_slot
end

View File

@ -1,2 +1,4 @@
class ToolBay < ApplicationRecord
belongs_to :device
has_many :tool_slots, dependent: :destroy
end

View File

@ -1,3 +1,4 @@
class ToolSlot < ApplicationRecord
belongs_to :ToolBay
belongs_to :tool_bay
has_many :tools
end

View File

@ -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

View File

@ -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

View File

@ -1,5 +1,6 @@
FactoryGirl.define do
factory :tool_bay do
name "MyString"
device
name "Example Tool Bay"
end
end

View File

@ -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

View File

@ -1,6 +1,6 @@
FactoryGirl.define do
factory :tool do
ToolSlot nil
tool_slot
name "MyString"
end
end