@@ -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