Skip to content

Commit 589f24a

Browse files
committed
improve system show?complete performance
1 parent ec0b0fc commit 589f24a

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

src/placeos-rest-api/controllers/modules.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ module PlaceOS::Api
202202
search_results.compact_map do |d|
203203
sys_id = d.control_system_id
204204
sys = sys_id ? control_systems.find { |csys| csys.id == sys_id } : nil
205-
d_id = d.driver_id
205+
d_id = d.driver_id.as(String)
206206
driver = drivers.find { |drive| drive.id == d_id }
207207
next unless driver
208208

src/placeos-rest-api/controllers/systems.cr

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,21 @@ module PlaceOS::Api
267267
sys.zone_data_details = ::PlaceOS::Model::Zone.find_all(current_control_system.zones).to_a
268268

269269
# extend the module details with the driver details
270-
modules = ::PlaceOS::Model::Module.find_all(current_control_system.modules).to_a.map do |mod|
271-
# Pick off driver name, and module_name from associated driver
272-
mod.driver_details = mod.driver.try do |driver|
273-
Api::Modules::DriverDetails.new(driver.name, driver.description, driver.module_name)
274-
end
275-
mod
270+
modules = ::PlaceOS::Model::Module.find_all(current_control_system.modules).to_a
271+
drivers = Model::Driver.find_all modules.map(&.driver_id.as(String)).uniq!
272+
modules.select! do |mod|
273+
d_id = mod.driver_id.as(String)
274+
driver = drivers.find { |drive| drive.id == d_id }
275+
next unless driver
276+
277+
mod.connected = if mod.running
278+
storage = Driver::RedisStorage.new(mod.id.as(String))
279+
storage["connected"]? != "false"
280+
else
281+
true
282+
end
283+
284+
mod.driver_details = Api::Modules::DriverDetails.new(driver.name, driver.description, driver.module_name)
276285
end
277286
sys.module_data_details = modules
278287

0 commit comments

Comments
 (0)