Skip to content

Commit 5a6bb06

Browse files
committed
Migrate verify_already_registered_device to Ecto
Use Ecto to compose and run the query. Signed-off-by: Davide Briani <davide.briani@secomind.com>
1 parent db5dd3b commit 5a6bb06

File tree

2 files changed

+23
-44
lines changed

2 files changed

+23
-44
lines changed

apps/astarte_pairing/lib/astarte_pairing/engine.ex

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -234,26 +234,9 @@ defmodule Astarte.Pairing.Engine do
234234
"in realm #{inspect(realm)}"
235235
)
236236

237-
keyspace_name = CQLUtils.realm_name_to_keyspace_name(realm, Config.astarte_instance_id!())
238-
239-
cqex_options =
240-
Config.cqex_options!()
241-
|> Keyword.put(:keyspace, keyspace_name)
242-
243237
with {:ok, device_id} <- Device.decode_device_id(encoded_device_id),
244-
{:ok, client} <-
245-
Client.new(
246-
Config.cassandra_node!(),
247-
cqex_options
248-
),
249-
:ok <- Queries.unregister_device(client, device_id) do
238+
:ok <- Queries.unregister_device(realm, device_id) do
250239
:ok
251-
else
252-
{:error, :shutdown} ->
253-
{:error, :realm_not_found}
254-
255-
{:error, reason} ->
256-
{:error, reason}
257240
end
258241
end
259242

apps/astarte_pairing/lib/astarte_pairing/queries.ex

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ defmodule Astarte.Pairing.Queries do
131131
end
132132
end
133133

134-
def unregister_device(client, device_id) do
135-
with :ok <- verify_already_registered_device(client, device_id),
136-
:ok <- do_unregister_device(client, device_id) do
134+
def unregister_device(realm_name, device_id) do
135+
with :ok <- verify_already_registered_device(realm_name, device_id),
136+
:ok <- do_unregister_device(realm_name, device_id) do
137137
:ok
138138
else
139139
%{acc: _acc, msg: msg} ->
@@ -156,31 +156,15 @@ defmodule Astarte.Pairing.Queries do
156156
end
157157
end
158158

159-
defp verify_already_registered_device(client, device_id) do
160-
statement = """
161-
SELECT device_id
162-
FROM devices
163-
WHERE device_id=:device_id
164-
"""
165-
166-
query =
167-
Query.new()
168-
|> Query.statement(statement)
169-
|> Query.put(:device_id, device_id)
170-
|> Query.consistency(:quorum)
171-
172-
with {:ok, res} <- Query.call(client, query) do
173-
case Result.head(res) do
174-
[device_id: _device_id] ->
175-
:ok
176-
177-
:empty_dataset ->
178-
{:error, :device_not_registered}
179-
end
159+
defp verify_already_registered_device(realm_name, device_id) do
160+
case fetch_device(realm_name, device_id) do
161+
{:ok, _device} -> :ok
162+
{:error, :device_not_found} -> {:error, :device_not_registered}
163+
{:error, reason} -> {:error, reason}
180164
end
181165
end
182166

183-
defp do_unregister_device(client, device_id) do
167+
defp do_unregister_device(realm_name, device_id) do
184168
statement = """
185169
INSERT INTO devices
186170
(device_id, first_credentials_request, credentials_secret)
@@ -195,7 +179,19 @@ defmodule Astarte.Pairing.Queries do
195179
|> Query.put(:credentials_secret, nil)
196180
|> Query.consistency(:quorum)
197181

198-
with {:ok, _res} <- Query.call(client, query) do
182+
keyspace_name =
183+
CQLUtils.realm_name_to_keyspace_name(realm_name, Config.astarte_instance_id!())
184+
185+
cqex_options =
186+
Config.cqex_options!()
187+
|> Keyword.put(:keyspace, keyspace_name)
188+
189+
with {:ok, client} <-
190+
CQEx.Client.new(
191+
Config.cassandra_node!(),
192+
cqex_options
193+
),
194+
{:ok, _res} <- Query.call(client, query) do
199195
:ok
200196
end
201197
end

0 commit comments

Comments
 (0)