Skip to content

Commit 463df38

Browse files
authored
Merge pull request #1096 from lusergit/refactor/delete-interface
refactor(RM): move `delete_interface`
2 parents c3be6d0 + 18f80b5 commit 463df38

File tree

2 files changed

+22
-30
lines changed

2 files changed

+22
-30
lines changed

apps/astarte_realm_management/lib/astarte_realm_management/engine.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ defmodule Astarte.RealmManagement.Engine do
426426
tag: "delete_interface_started"
427427
)
428428

429-
Queries.delete_interface(client, name, major)
429+
Queries.delete_interface(realm_name, name, major)
430430
end
431431
end
432432

apps/astarte_realm_management/lib/astarte_realm_management/queries.ex

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -455,48 +455,40 @@ defmodule Astarte.RealmManagement.Queries do
455455
:ok
456456
end
457457

458-
def delete_interface(client, interface_name, interface_major_version) do
458+
def delete_interface(realm_name, interface_name, interface_major_version) do
459459
_ =
460460
Logger.info("Delete interface.",
461461
interface: interface_name,
462462
interface_major: interface_major_version,
463463
tag: "db_delete_interface"
464464
)
465465

466-
delete_endpoints_statement = "DELETE FROM endpoints WHERE interface_id=:interface_id"
466+
keyspace = Realm.keyspace_name(realm_name)
467467

468468
interface_id = CQLUtils.interface_id(interface_name, interface_major_version)
469469

470-
delete_endpoints =
471-
DatabaseQuery.new()
472-
|> DatabaseQuery.statement(delete_endpoints_statement)
473-
|> DatabaseQuery.put(:interface_id, interface_id)
474-
|> DatabaseQuery.consistency(:each_quorum)
475-
476-
delete_interface_statement =
477-
"DELETE FROM interfaces WHERE name=:name AND major_version=:major"
470+
endpoint_query =
471+
from Endpoint,
472+
prefix: ^keyspace,
473+
where: [interface_id: ^interface_id]
478474

479-
delete_interface =
480-
DatabaseQuery.new()
481-
|> DatabaseQuery.statement(delete_interface_statement)
482-
|> DatabaseQuery.put(:name, interface_name)
483-
|> DatabaseQuery.put(:major, interface_major_version)
484-
|> DatabaseQuery.consistency(:each_quorum)
475+
interface_query =
476+
from Interface,
477+
prefix: ^keyspace,
478+
where: [name: ^interface_name, major_version: ^interface_major_version]
485479

486-
# TODO: use a batch here
487-
with {:ok, _result} <- DatabaseQuery.call(client, delete_endpoints),
488-
{:ok, _result} <- DatabaseQuery.call(client, delete_interface) do
489-
:ok
490-
else
491-
{:error, reason} ->
492-
_ =
493-
Logger.error(
494-
"Database error while deleting #{interface_name}, reason: #{inspect(reason)}.",
495-
tag: "db_error"
496-
)
480+
queries = [
481+
Repo.to_sql(:delete_all, endpoint_query),
482+
Repo.to_sql(:delete_all, interface_query)
483+
]
497484

498-
{:error, :database_error}
499-
end
485+
Exandra.execute_batch(
486+
Repo,
487+
%Exandra.Batch{
488+
queries: queries
489+
},
490+
consistency: :each_quorum
491+
)
500492
end
501493

502494
def delete_interface_storage(

0 commit comments

Comments
 (0)