Skip to content

Commit a2d339a

Browse files
committed
broken
Signed-off-by: Eddy Babetto <eddy.babetto@secomind.com>
1 parent 412231c commit a2d339a

File tree

5 files changed

+67
-59
lines changed

5 files changed

+67
-59
lines changed

apps/astarte_appengine_api/lib/astarte_appengine_api/device/device_status.ex

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -51,25 +51,25 @@ defmodule Astarte.AppEngine.API.Device.DeviceStatus do
5151

5252
def from_db_row(row) when is_map(row) do
5353
%{
54-
"device_id" => device_id,
55-
"aliases" => aliases,
56-
"introspection" => introspection_major,
57-
"introspection_minor" => introspection_minor,
58-
"connected" => connected,
59-
"last_connection" => last_connection,
60-
"last_disconnection" => last_disconnection,
61-
"first_registration" => first_registration,
62-
"first_credentials_request" => first_credentials_request,
63-
"last_credentials_request_ip" => last_credentials_request_ip,
64-
"last_seen_ip" => last_seen_ip,
65-
"attributes" => attributes,
66-
"inhibit_credentials_request" => credentials_inhibited,
67-
"total_received_msgs" => total_received_msgs,
68-
"total_received_bytes" => total_received_bytes,
69-
"groups" => groups_map,
70-
"exchanged_msgs_by_interface" => exchanged_msgs_by_interface,
71-
"exchanged_bytes_by_interface" => exchanged_bytes_by_interface,
72-
"old_introspection" => old_introspection
54+
device_id: device_id,
55+
aliases: aliases,
56+
introspection: introspection_major,
57+
introspection_minor: introspection_minor,
58+
connected: connected,
59+
last_connection: last_connection,
60+
last_disconnection: last_disconnection,
61+
first_registration: first_registration,
62+
first_credentials_request: first_credentials_request,
63+
last_credentials_request_ip: last_credentials_request_ip,
64+
last_seen_ip: last_seen_ip,
65+
attributes: attributes,
66+
inhibit_credentials_request: credentials_inhibited,
67+
total_received_msgs: total_received_msgs,
68+
total_received_bytes: total_received_bytes,
69+
groups: groups_map,
70+
exchanged_msgs_by_interface: exchanged_msgs_by_interface,
71+
exchanged_bytes_by_interface: exchanged_bytes_by_interface,
72+
old_introspection: old_introspection
7373
} = row
7474

7575
introspection =

apps/astarte_appengine_api/lib/astarte_appengine_api/groups/queries.ex

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -34,44 +34,39 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
3434
def list_devices(realm_name, group_name, opts \\ []) do
3535
keyspace = DataAccessRealm.keyspace_name(realm_name)
3636

37-
query =
38-
if opts[:details],
39-
do: list_devices_with_details(keyspace, group_name, opts),
40-
else: list_grouped_devices(keyspace, group_name, opts)
41-
42-
limit = opts[:limit]
43-
query = query |> limit(^limit)
44-
IO.inspect(query)
45-
46-
case Repo.all(query) do
47-
[] -> {:error, :group_not_found}
48-
devices -> {:ok, build_device_list(keyspace, devices, opts)}
37+
case if(opts[:details],
38+
do: list_devices_with_details(keyspace, group_name, opts),
39+
else: list_grouped_devices(keyspace, group_name, opts)
40+
) do
41+
{:error, :group_not_found} ->
42+
{:error, :group_not_found}
43+
44+
%DevicesList{devices: _result} ->
45+
Xandra.Cluster.run(:xandra, fn conn ->
46+
query = list_devices_with_details_query(keyspace, group_name, opts)
47+
48+
# We put them all, even if some of them could be ignored depending on the query
49+
parameters = %{
50+
"group_name" => group_name,
51+
"previous_token" => opts[:from_token],
52+
"page_size" => opts[:limit]
53+
}
54+
55+
with {:ok, prepared} <- prepare_with_realm(conn, realm_name, query),
56+
{:ok, %Xandra.Page{} = page} <-
57+
Xandra.execute(conn, prepared, parameters, uuid_format: :binary),
58+
result when result != [] <- Enum.to_list(page) do
59+
{:ok, build_device_list(realm_name, result, opts)}
60+
else
61+
[] ->
62+
{:error, :group_not_found}
63+
64+
{:error, reason} ->
65+
_ = Logger.error("Database error: #{inspect(reason)}.", tag: "db_error")
66+
{:error, :database_error}
67+
end
68+
end)
4969
end
50-
51-
Xandra.Cluster.run(:xandra, fn conn ->
52-
query = list_devices_with_details_query(keyspace, group_name, opts)
53-
54-
# We put them all, even if some of them could be ignored depending on the query
55-
parameters = %{
56-
"group_name" => group_name,
57-
"previous_token" => opts[:from_token],
58-
"page_size" => opts[:limit]
59-
}
60-
61-
with {:ok, prepared} <- prepare_with_realm(conn, realm_name, query),
62-
{:ok, %Xandra.Page{} = page} <-
63-
Xandra.execute(conn, prepared, parameters, uuid_format: :binary),
64-
result when result != [] <- Enum.to_list(page) do
65-
{:ok, build_device_list(realm_name, result, opts)}
66-
else
67-
[] ->
68-
{:error, :group_not_found}
69-
70-
{:error, reason} ->
71-
_ = Logger.error("Database error: #{inspect(reason)}.", tag: "db_error")
72-
{:error, :database_error}
73-
end
74-
end)
7570
end
7671

7772
defp list_devices_with_details(keyspace, group_name, opts) do
@@ -80,7 +75,7 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
8075

8176
case Repo.all(query) do
8277
[] -> {:error, :group_not_found}
83-
devices -> {:ok, build_device_list(keyspace, devices, opts)}
78+
devices -> build_device_list(keyspace, devices, opts)
8479
end
8580
end
8681

@@ -89,7 +84,7 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
8984

9085
case Repo.all(query) do
9186
[] -> {:error, :group_not_found}
92-
devices -> {:ok, build_device_list(keyspace, devices, opts)}
87+
devices -> build_device_list(keyspace, devices, opts)
9388
end
9489
end
9590

@@ -222,7 +217,10 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
222217
end
223218

224219
defp compute_device_status(realm_name, device_row) do
225-
%{"device_id" => device_id} = device_row
220+
%{
221+
id: device_id
222+
} = device_row
223+
226224
device_status = DeviceStatus.from_db_row(device_row)
227225
# TODO: rebase on newer devicestatus
228226
deletion_in_progress? = deletion_in_progress?(realm_name, device_id)

apps/astarte_appengine_api/lib/astarte_appengine_api/health.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ defmodule Astarte.AppEngine.API.Health do
6060
with {:ok, _result} <- safe_query(schema_query, opts),
6161
{:ok, _result} <- safe_query(realm_query, opts) do
6262
:ok
63+
else
64+
err -> err
6365
end
6466
end
6567

@@ -74,6 +76,9 @@ defmodule Astarte.AppEngine.API.Health do
7476
{:error, %Xandra.ConnectionError{}} ->
7577
{:error, :database_connection_error}
7678

79+
{:error, :health_check_bad} ->
80+
{:error, :database_connection_error}
81+
7782
{:error, %Xandra.Error{message: message, reason: reason}} ->
7883
error_message =
7984
case message do

apps/astarte_appengine_api/lib/astarte_appengine_api_web/controllers/device_status_by_group_controller.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ defmodule Astarte.AppEngine.APIWeb.DeviceStatusByGroupController do
3232
) do
3333
with {:ok, %DevicesList{} = devices_list} <-
3434
Groups.list_detailed_devices(realm_name, group_name, params) do
35+
IO.inspect(devices_list)
3536
render(conn, "detailed_index.json", devices_list: devices_list, request: params)
37+
else
38+
err -> IO.inspect(err)
3639
end
3740
end
3841

apps/astarte_appengine_api/test/astarte_appengine_api_web/controllers/device_status_by_group_controller_test.exs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ defmodule Astarte.AppEngine.APIWeb.DeviceStatusByGroupControllerTest do
152152
assert length(devices) == length(@group_devices)
153153

154154
for device <- devices do
155+
IO.inspect(device)
156+
155157
%{
156158
"id" => device_id,
157159
"connected" => _,

0 commit comments

Comments
 (0)