diff --git a/lib/nerves_hub/devices/metrics.ex b/lib/nerves_hub/devices/metrics.ex index da3d395d5..51e842fe0 100644 --- a/lib/nerves_hub/devices/metrics.ex +++ b/lib/nerves_hub/devices/metrics.ex @@ -173,11 +173,12 @@ defmodule NervesHub.Devices.Metrics do Saves map of metrics. """ def save_metrics(device_id, metrics) do - Repo.transaction(fn -> - Enum.map(metrics, fn {key, val} -> - save_metric(%{device_id: device_id, key: key, value: val}) - end) + entries = Enum.map(metrics, fn {key, val} -> + DeviceMetric.save(%{device_id: device_id, key: key, value: val}).changes + |> Map.merge(%{inserted_at: {:placeholder, :now}}) end) + + Repo.insert_all(DeviceMetric, entries, placeholders: %{now: DateTime.utc_now()}) end @doc """ diff --git a/lib/nerves_hub_web/channels/device_channel.ex b/lib/nerves_hub_web/channels/device_channel.ex index 22bf0fec2..4307e67c8 100644 --- a/lib/nerves_hub_web/channels/device_channel.ex +++ b/lib/nerves_hub_web/channels/device_channel.ex @@ -426,7 +426,7 @@ defmodule NervesHubWeb.DeviceChannel do with {:health_report, {:ok, _}} <- {:health_report, Devices.save_device_health(device_health)}, - {:metrics_report, {:ok, _}} <- + {:metrics_report, {_, _}} <- {:metrics_report, Metrics.save_metrics(socket.assigns.device.id, metrics)} do device_internal_broadcast!(socket.assigns.device, "health_check_report", %{}) else diff --git a/test/nerves_hub/device_metrics_test.exs b/test/nerves_hub/device_metrics_test.exs index 37871d392..e28e866ba 100644 --- a/test/nerves_hub/device_metrics_test.exs +++ b/test/nerves_hub/device_metrics_test.exs @@ -46,8 +46,7 @@ defmodule NervesHub.DeviceMetricsTest do "used_percent" => 2 } - assert {:ok, result} = Metrics.save_metrics(device.id, metrics) - assert length(result) == map_size(metrics) + assert {7, nil} = Metrics.save_metrics(device.id, metrics) end end diff --git a/test/nerves_hub_web/live/devices/health_test.exs b/test/nerves_hub_web/live/devices/health_test.exs index a2b8c3c7a..a19343cb2 100644 --- a/test/nerves_hub_web/live/devices/health_test.exs +++ b/test/nerves_hub_web/live/devices/health_test.exs @@ -37,7 +37,7 @@ defmodule NervesHubWeb.Devices.HealthTest do "used_percent" => 2 } - assert {:ok, _} = Metrics.save_metrics(device.id, metrics) + assert {7, nil} = Metrics.save_metrics(device.id, metrics) conn |> visit("/org/#{org.name}/#{product.name}/devices/#{device.identifier}/health") diff --git a/test/nerves_hub_web/live/devices/show_test.exs b/test/nerves_hub_web/live/devices/show_test.exs index e82c1fec2..cf5815f4e 100644 --- a/test/nerves_hub_web/live/devices/show_test.exs +++ b/test/nerves_hub_web/live/devices/show_test.exs @@ -249,7 +249,7 @@ defmodule NervesHubWeb.Live.Devices.ShowTest do "used_percent" => 60 } - assert {:ok, _} = Metrics.save_metrics(device.id, metrics) + assert {7, nil} = Metrics.save_metrics(device.id, metrics) conn |> visit("/org/#{org.name}/#{product.name}/devices/#{device.identifier}") @@ -278,7 +278,7 @@ defmodule NervesHubWeb.Live.Devices.ShowTest do "used_percent" => 60 } - assert {:ok, _} = Metrics.save_metrics(device.id, metrics) + assert {6, nil} = Metrics.save_metrics(device.id, metrics) conn |> visit("/org/#{org.name}/#{product.name}/devices/#{device.identifier}")