Skip to content

Commit 7fba9be

Browse files
committed
(appengine) Edit rooms queries for exandra
Signed-off-by: Eddy Babetto <eddy.babetto@secomind.com>
1 parent f33618c commit 7fba9be

File tree

2 files changed

+18
-53
lines changed

2 files changed

+18
-53
lines changed

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

Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -136,36 +136,10 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
136136

137137
def check_device_in_group(realm_name, group_name, device_id) do
138138
keyspace = DataAccessRealm.keyspace_name(realm_name)
139-
{:ok, decoded_device_id} = Device.decode_device_id(device_id)
140139

141-
query =
142-
from(d in DataBaseDevice,
143-
prefix: ^keyspace,
144-
where: d.device_id == ^decoded_device_id,
145-
select: d.groups
146-
)
147-
148-
result = Repo.one(query) || %{}
149-
150-
with true <- Map.has_key?(result, group_name) do
151-
{:ok, true}
152-
else
153-
{:error, :invalid_device_id} ->
154-
{:error, :device_not_found}
155-
156-
{:error, reason} ->
157-
_ = Logger.error("Database error: #{inspect(reason)}.", tag: "db_error")
158-
{:error, :database_error}
159-
160-
[] ->
161-
{:ok, false}
162-
163-
false ->
164-
{:ok, false}
165-
166-
smth ->
167-
dbg(smth)
168-
{:error, :device_not_found}
140+
case fetch_device_groups(keyspace, device_id) do
141+
{:ok, groups} -> {:ok, Map.has_key?(groups, group_name)}
142+
{:error, :device_not_found} -> {:error, :device_not_found}
169143
end
170144
end
171145

@@ -311,24 +285,15 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
311285
keyspace = DataAccessRealm.keyspace_name(realm_name)
312286

313287
query =
314-
from(d in GroupedDevice,
288+
from d in GroupedDevice,
315289
prefix: ^keyspace,
316290
where: d.group_name == ^group_name,
317-
select: d.group_name
318-
)
291+
select: d.group_name,
292+
limit: 1
319293

320-
with false <- Repo.all(query) |> Enum.empty?() do
321-
true
322-
else
323-
{:error, reason} ->
324-
_ = Logger.error("Database error: #{inspect(reason)}.", tag: "db_error")
325-
false
326-
327-
[] ->
328-
false
329-
330-
true ->
331-
false
294+
case Repo.fetch_one(query) do
295+
{:ok, _} -> true
296+
_not_found -> false
332297
end
333298
end
334299

@@ -478,12 +443,6 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
478443

479444
def add_to_grouped_device(realm_name, group_name, decoded_device_ids) do
480445
keyspace = DataAccessRealm.keyspace_name(realm_name)
481-
grouped_device_table = GroupedDevice.__schema__(:source)
482-
483-
insert_grouped_device_sql = """
484-
INSERT INTO #{keyspace}.#{grouped_device_table} (group_name, insertion_uuid, device_id)
485-
values (?, ?, ?)
486-
"""
487446

488447
queries =
489448
decoded_device_ids
@@ -499,8 +458,14 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
499458
update_device_groups =
500459
Repo.to_sql(:update_all, query)
501460

502-
insert_grouped_device_params = [group_name, insertion_uuid, device_id]
503-
insert_grouped_device = {insert_grouped_device_sql, insert_grouped_device_params}
461+
grouped_device =
462+
%GroupedDevice{
463+
group_name: group_name,
464+
insertion_uuid: insertion_uuid,
465+
device_id: device_id
466+
}
467+
468+
insert_grouped_device = Repo.insert_to_sql(grouped_device, prefix: keyspace)
504469

505470
[update_device_groups, insert_grouped_device]
506471
end)

apps/astarte_appengine_api/lib/astarte_appengine_api/rooms/room.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ defmodule Astarte.AppEngine.API.Rooms.Room do
2222
alias Astarte.AppEngine.API.Device.DevicesList
2323
alias Astarte.AppEngine.API.Groups
2424
alias Astarte.AppEngine.API.Rooms.WatchRequest
25+
alias Astarte.AppEngine.API.Rooms.Queries
2526
alias Astarte.AppEngine.API.RPC.DataUpdaterPlant
2627
alias Astarte.AppEngine.API.RPC.DataUpdaterPlant.VolatileTrigger
2728
alias Astarte.AppEngine.API.Utils
@@ -32,7 +33,6 @@ defmodule Astarte.AppEngine.API.Rooms.Room do
3233
alias Astarte.Core.Triggers.SimpleTriggersProtobuf.SimpleTriggerContainer
3334
alias Astarte.Core.Triggers.SimpleTriggersProtobuf.TaggedSimpleTrigger
3435
alias Astarte.Core.Triggers.SimpleTriggersProtobuf.TriggerTargetContainer
35-
alias Astarte.AppEngine.API.Rooms.Queries
3636

3737
require Logger
3838

0 commit comments

Comments
 (0)