@@ -28,7 +28,6 @@ defmodule Astarte.DataUpdaterPlant.DataUpdater.Queries do
2828 alias Astarte.DataUpdaterPlant.DataUpdater.IndividualProperty
2929 alias Astarte.DataUpdaterPlant.DataUpdater.KvStore
3030 alias Astarte.DataUpdaterPlant.DataUpdater.Realm
31- alias CQEx.Query , as: DatabaseQuery
3231 alias Astarte.DataUpdaterPlant.Repo
3332 import Ecto.Query
3433 require Logger
@@ -602,34 +601,25 @@ defmodule Astarte.DataUpdaterPlant.DataUpdater.Queries do
602601 end
603602 end
604603
605- def register_device_with_interface ( db_client , device_id , interface_name , interface_major ) do
606- key_insert_statement = """
607- INSERT INTO kv_store (group, key)
608- VALUES (:group, :key)
609- """
610-
611- major_str = "v#{ Integer . to_string ( interface_major ) } "
604+ def register_device_with_interface ( realm , device_id , interface_name , interface_major ) do
605+ keyspace_name = Realm . keyspace_name ( realm )
612606 encoded_device_id = CoreDevice . encode_device_id ( device_id )
613607
614- insert_device_by_interface_query =
615- DatabaseQuery . new ( )
616- |> DatabaseQuery . statement ( key_insert_statement )
617- |> DatabaseQuery . put ( :group , "devices-by-interface-#{ interface_name } -#{ major_str } " )
618- |> DatabaseQuery . put ( :key , encoded_device_id )
619- |> DatabaseQuery . consistency ( :each_quorum )
620-
621- insert_to_with_data_on_interface =
622- DatabaseQuery . new ( )
623- |> DatabaseQuery . statement ( key_insert_statement )
624- |> DatabaseQuery . put (
625- :group ,
626- "devices-with-data-on-interface-#{ interface_name } -#{ major_str } "
627- )
628- |> DatabaseQuery . put ( :key , encoded_device_id )
629- |> DatabaseQuery . consistency ( :each_quorum )
608+ devices_by_interface = % {
609+ "group" => "devices-by-interface-#{ interface_name } -v#{ interface_major } " ,
610+ "key" => encoded_device_id
611+ }
612+
613+ devices_on_interface = % {
614+ "group" => "devices-with-data-on-interface-#{ interface_name } -v#{ interface_major } " ,
615+ "key" => encoded_device_id
616+ }
617+
618+ opts = [ prefix: keyspace_name , consistency: :each_quorum ]
630619
631- with { :ok , _result } <- DatabaseQuery . call ( db_client , insert_device_by_interface_query ) ,
632- { :ok , _result } <- DatabaseQuery . call ( db_client , insert_to_with_data_on_interface ) do
620+ # TODO: what about a batch here?
621+ with { n , _ } when is_integer ( n ) <- Repo . safe_insert ( KvStore , devices_by_interface , opts ) ,
622+ { m , _ } when is_integer ( m ) <- Repo . safe_insert ( KvStore , devices_on_interface , opts ) do
633623 :ok
634624 else
635625 { :error , reason } ->
0 commit comments