@@ -597,46 +597,35 @@ defmodule Astarte.AppEngine.API.Device.Queries do
597597 end
598598
599599 def insert_alias ( realm_name , client , device_id , alias_tag , alias_value ) do
600+ keyspace = keyspace_name ( realm_name )
601+ names_table = Name . __schema__ ( :source )
602+
600603 insert_alias_to_names_statement = """
601- INSERT INTO names
604+ INSERT INTO #{ keyspace } . #{ names_table }
602605 (object_name, object_type, object_uuid)
603- VALUES (:alias , 1, :device_id )
606+ VALUES (? , 1, ? )
604607 """
605608
606- insert_alias_to_names_query =
607- DatabaseQuery . new ( )
608- |> DatabaseQuery . statement ( insert_alias_to_names_statement )
609- |> DatabaseQuery . put ( :alias , alias_value )
610- |> DatabaseQuery . put ( :device_id , device_id )
611- |> DatabaseQuery . consistency ( :each_quorum )
612- |> DatabaseQuery . convert ( )
609+ insert_alias_to_names_params = [ alias_value , device_id ]
610+ insert_alias_to_names_query = { insert_alias_to_names_statement , insert_alias_to_names_params }
613611
614- insert_alias_to_device_statement = """
615- UPDATE devices
616- SET aliases[:alias_tag] = :alias
617- WHERE device_id = :device_id
618- """
612+ new_alias = % { alias_tag => alias_value }
619613
620- insert_alias_to_device_query =
621- DatabaseQuery . new ( )
622- |> DatabaseQuery . statement ( insert_alias_to_device_statement )
623- |> DatabaseQuery . put ( :alias_tag , alias_tag )
624- |> DatabaseQuery . put ( :alias , alias_value )
625- |> DatabaseQuery . put ( :device_id , device_id )
626- |> DatabaseQuery . consistency ( :each_quorum )
627- |> DatabaseQuery . convert ( )
614+ insert_alias_to_device =
615+ from DatabaseDevice ,
616+ prefix: ^ keyspace ,
617+ where: [ device_id: ^ device_id ] ,
618+ update: [ set: [ aliases: fragment ( "aliases + ?" , ^ new_alias ) ] ]
619+
620+ insert_alias_to_device_query = Repo . to_sql ( :update_all , insert_alias_to_device )
628621
629622 insert_batch =
630- CQEx . cql_query_batch (
631- consistency: :each_quorum ,
632- mode: :logged ,
633- queries: [ insert_alias_to_names_query , insert_alias_to_device_query ]
634- )
623+ % Exandra.Batch { queries: [ insert_alias_to_names_query , insert_alias_to_device_query ] }
635624
636625 with { :existing , { :error , :device_not_found } } <-
637626 { :existing , device_alias_to_device_id ( realm_name , alias_value ) } ,
638627 :ok <- try_delete_alias ( realm_name , client , device_id , alias_tag ) ,
639- { :ok , _result } <- DatabaseQuery . call ( client , insert_batch ) do
628+ :ok <- Exandra . execute_batch ( Repo , insert_batch , consistency: :each_quorum ) do
640629 :ok
641630 else
642631 { :existing , { :ok , _device_uuid } } ->
@@ -647,14 +636,6 @@ defmodule Astarte.AppEngine.API.Device.Queries do
647636
648637 { :error , :device_not_found } ->
649638 { :error , :device_not_found }
650-
651- % { acc: _ , msg: error_message } ->
652- _ = Logger . warning ( "Database error: #{ error_message } ." , tag: "db_error" )
653- { :error , :database_error }
654-
655- { :error , reason } ->
656- _ = Logger . warning ( "Database error, reason: #{ inspect ( reason ) } ." , tag: "db_error" )
657- { :error , :database_error }
658639 end
659640 end
660641
0 commit comments