@@ -31,15 +31,15 @@ defmodule Astarte.AppEngine.API.Device.Queries do
3131 alias Astarte.Core.CQLUtils
3232 alias Astarte.Core.Device
3333 alias Astarte.Core.InterfaceDescriptor
34- alias Astarte.AppEngine.API.Realm
34+ alias Astarte.AppEngine.API.Realm , as: DataAccessRealm
3535 alias Astarte.AppEngine.API.Devices.Device , as: DatabaseDevice
3636 alias Astarte.AppEngine.API.Endpoint , as: DatabaseEndpoint
3737
3838 require CQEx
3939 require Logger
4040
4141 def retrieve_interfaces_list ( realm_name , device_id ) do
42- keyspace = keyspace_name ( realm_name )
42+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
4343
4444 query =
4545 from d in DatabaseDevice ,
@@ -53,7 +53,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
5353 end
5454
5555 def retrieve_all_endpoint_ids_for_interface! ( realm_name , interface_id , opts \\ [ ] ) do
56- keyspace = keyspace_name ( realm_name )
56+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
5757
5858 query =
5959 from DatabaseEndpoint ,
@@ -71,7 +71,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
7171 end
7272
7373 def retrieve_all_endpoints_for_interface! ( realm_name , interface_id ) do
74- keyspace = keyspace_name ( realm_name )
74+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
7575
7676 query =
7777 from DatabaseEndpoint ,
@@ -83,7 +83,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
8383 end
8484
8585 def retrieve_mapping ( realm_name , interface_id , endpoint_id ) do
86- keyspace = keyspace_name ( realm_name )
86+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
8787
8888 query =
8989 from DatabaseEndpoint ,
@@ -105,7 +105,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
105105 end
106106
107107 def interface_has_explicit_timestamp? ( realm_name , interface_id ) do
108- keyspace = keyspace_name ( realm_name )
108+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
109109 do_interface_has_explicit_timestamp? ( keyspace , interface_id )
110110 end
111111
@@ -125,7 +125,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
125125 end
126126
127127 def fetch_datastream_maximum_storage_retention ( realm_name ) do
128- keyspace = keyspace_name ( realm_name )
128+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
129129 group = "realm_config"
130130 key = "datastream_maximum_storage_retention"
131131
@@ -145,16 +145,19 @@ defmodule Astarte.AppEngine.API.Device.Queries do
145145 opts
146146 ) do
147147 columns = default_endpoint_column_selection ( endpoint_row )
148+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
148149
149150 opts = % { opts | limit: 1 }
150151
151- do_get_datastream_values ( realm_name , device_id , interface_row , endpoint_id , path , opts )
152+ do_get_datastream_values ( keyspace , device_id , interface_row , endpoint_id , path , opts )
152153 |> select ( ^ columns )
153154 |> Repo . fetch_one ( )
154155 end
155156
156157 def retrieve_all_endpoint_paths! ( realm_name , device_id , interface_id , endpoint_id ) do
157- find_endpoints ( realm_name , "individual_properties" , device_id , interface_id , endpoint_id )
158+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
159+
160+ find_endpoints ( keyspace , "individual_properties" , device_id , interface_id , endpoint_id )
158161 |> select ( [ :path ] )
159162 |> Repo . all ( )
160163 end
@@ -176,7 +179,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
176179 # TODO: use received value_timestamp when needed
177180 # TODO: :reception_timestamp_submillis is just a place holder right now
178181
179- keyspace = keyspace_name ( realm_name )
182+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
180183
181184 # Ecto expects microsecond precision
182185 { reception , reception_submillis } = split_datetime_to_ms_and_submillis ( reception_timestamp )
@@ -223,7 +226,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
223226
224227 # TODO: :reception_timestamp_submillis is just a place holder right now
225228 % InterfaceDescriptor { interface_id: interface_id , storage: storage } = interface_descriptor
226- keyspace_name = Realm . keyspace_name ( realm_name )
229+ keyspace_name = DataAccessRealm . keyspace_name ( realm_name )
227230
228231 q =
229232 from v in storage ,
@@ -257,7 +260,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
257260 opts
258261 ) do
259262 value_column = CQLUtils . type_to_db_column_name ( endpoint . value_type )
260- keyspace = keyspace_name ( realm_name )
263+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
261264
262265 { timestamp_ms , timestamp_submillis } = split_ms_and_submillis ( timestamp )
263266
@@ -295,7 +298,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
295298 opts
296299 ) do
297300 value_column = CQLUtils . type_to_db_column_name ( endpoint . value_type )
298- keyspace = keyspace_name ( realm_name )
301+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
299302 { timestamp_ms , timestamp_submillis } = split_ms_and_submillis ( timestamp )
300303
301304 attributes = % {
@@ -325,7 +328,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
325328 timestamp ,
326329 opts
327330 ) do
328- keyspace = keyspace_name ( realm_name )
331+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
329332 interface_id = interface_descriptor . interface_id
330333
331334 endpoint_rows =
@@ -452,12 +455,12 @@ defmodule Astarte.AppEngine.API.Device.Queries do
452455 end
453456
454457 def retrieve_device_for_status ( realm_name , device_id ) do
455- keyspace = keyspace_name ( realm_name )
458+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
456459 do_retrieve_device_for_status ( keyspace , device_id )
457460 end
458461
459462 def retrieve_device_status ( realm_name , device_id ) do
460- keyspace = keyspace_name ( realm_name )
463+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
461464
462465 with { :ok , device } <- do_retrieve_device_for_status ( keyspace , device_id ) do
463466 { :ok , build_device_status ( keyspace , device ) }
@@ -479,7 +482,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
479482 end
480483
481484 def retrieve_devices_list ( realm_name , limit , retrieve_details? , previous_token ) do
482- keyspace = keyspace_name ( realm_name )
485+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
483486
484487 field_selection =
485488 if retrieve_details? do
@@ -526,7 +529,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
526529 end
527530
528531 def device_alias_to_device_id ( realm_name , device_alias ) do
529- keyspace = keyspace_name ( realm_name )
532+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
530533 do_device_alias_to_device_id ( keyspace , device_alias )
531534 end
532535
@@ -541,7 +544,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
541544 end
542545
543546 def insert_attribute ( realm_name , device_id , attribute_key , attribute_value ) do
544- keyspace = keyspace_name ( realm_name )
547+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
545548 new_attribute = % { attribute_key => attribute_value }
546549
547550 query =
@@ -556,7 +559,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
556559 end
557560
558561 def delete_attribute ( realm_name , device_id , attribute_key ) do
559- keyspace = keyspace_name ( realm_name )
562+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
560563 query = from ( d in DatabaseDevice , select: d . attributes )
561564 opts = [ prefix: keyspace , consistency: :quorum ]
562565
@@ -583,7 +586,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
583586 end
584587
585588 def insert_alias ( realm_name , device_id , alias_tag , alias_value ) do
586- keyspace = keyspace_name ( realm_name )
589+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
587590
588591 name = % Name {
589592 object_name: alias_value ,
@@ -624,7 +627,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
624627 end
625628
626629 def delete_alias ( realm_name , device_id , alias_tag ) do
627- keyspace = keyspace_name ( realm_name )
630+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
628631
629632 query =
630633 from d in DatabaseDevice ,
@@ -674,7 +677,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
674677 end
675678
676679 def set_inhibit_credentials_request ( realm_name , device_id , inhibit_credentials_request ) do
677- keyspace = keyspace_name ( realm_name )
680+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
678681
679682 query =
680683 from DatabaseDevice ,
@@ -688,7 +691,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
688691 end
689692
690693 def retrieve_object_datastream_values ( realm_name , device_id , interface_row , path , columns , opts ) do
691- keyspace = keyspace_name ( realm_name )
694+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
692695
693696 query_limit = query_limit ( opts )
694697 timestamp_column = timestamp_column ( opts . explicit_timestamp )
@@ -719,9 +722,10 @@ defmodule Astarte.AppEngine.API.Device.Queries do
719722 ) do
720723 value_column = CQLUtils . type_to_db_column_name ( endpoint_row . value_type ) |> String . to_atom ( )
721724 columns = [ :path , value_column ]
725+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
722726
723727 find_endpoints (
724- realm_name ,
728+ keyspace ,
725729 interface_row . storage ,
726730 device_id ,
727731 interface_row . interface_id ,
@@ -741,9 +745,10 @@ defmodule Astarte.AppEngine.API.Device.Queries do
741745 opts
742746 ) do
743747 columns = default_endpoint_column_selection ( endpoint_row )
748+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
744749
745750 query =
746- do_get_datastream_values ( realm_name , device_id , interface_row , endpoint_id , path , opts )
751+ do_get_datastream_values ( keyspace , device_id , interface_row , endpoint_id , path , opts )
747752
748753 values = query |> select ( ^ columns ) |> Repo . all ( )
749754 count = query |> select ( [ d ] , count ( d . value_timestamp ) ) |> Repo . one! ( )
@@ -752,22 +757,20 @@ defmodule Astarte.AppEngine.API.Device.Queries do
752757 end
753758
754759 def value_type_query ( realm_name , interface_id , endpoint_id ) do
755- keyspace = keyspace_name ( realm_name )
760+ keyspace = DataAccessRealm . keyspace_name ( realm_name )
756761 query = from DatabaseEndpoint , select: [ :value_type ]
757762
758763 Repo . get_by! ( query , [ interface_id: interface_id , endpoint_id: endpoint_id ] , prefix: keyspace )
759764 end
760765
761766 defp do_get_datastream_values (
762- realm_name ,
767+ keyspace ,
763768 device_id ,
764769 interface_row ,
765770 endpoint_id ,
766771 path ,
767772 opts
768773 ) do
769- keyspace = keyspace_name ( realm_name )
770-
771774 query_limit = query_limit ( opts )
772775
773776 # Check the explicit user defined limit to know if we have to reorder data
@@ -822,9 +825,7 @@ defmodule Astarte.AppEngine.API.Device.Queries do
822825 |> where ( ^ filter_to )
823826 end
824827
825- defp find_endpoints ( realm_name , table_name , device_id , interface_id , endpoint_id ) do
826- keyspace = keyspace_name ( realm_name )
827-
828+ defp find_endpoints ( keyspace , table_name , device_id , interface_id , endpoint_id ) do
828829 from ( table_name , prefix: ^ keyspace )
829830 |> where ( device_id: ^ device_id , interface_id: ^ interface_id , endpoint_id: ^ endpoint_id )
830831 end
@@ -842,13 +843,6 @@ defmodule Astarte.AppEngine.API.Device.Queries do
842843 [ value_column | default_endpoint_column_selection ( ) ]
843844 end
844845
845- defp keyspace_name ( realm_name ) do
846- Astarte.Core.CQLUtils . realm_name_to_keyspace_name (
847- realm_name ,
848- Astarte.DataAccess.Config . astarte_instance_id! ( )
849- )
850- end
851-
852846 defp timestamp_column ( explicit_timestamp? ) do
853847 case explicit_timestamp? do
854848 nil -> :reception_timestamp
0 commit comments