Skip to content

Commit db3982f

Browse files
committed
Move keyspace translations to public functions in query files
Signed-off-by: Eddy Babetto <eddy.babetto@secomind.com>
1 parent 0e0452e commit db3982f

9 files changed

Lines changed: 68 additions & 71 deletions

File tree

apps/astarte_appengine_api/lib/astarte_appengine_api/auth/auth.ex

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,10 @@
1818

1919
defmodule Astarte.AppEngine.API.Auth do
2020
alias Astarte.AppEngine.API.Queries
21-
alias Astarte.AppEngine.API.Config
22-
alias Astarte.Core.CQLUtils
2321

2422
require Logger
2523

2624
def fetch_public_key(realm) do
27-
keyspace = CQLUtils.realm_name_to_keyspace_name(realm, Config.astarte_instance_id!())
28-
29-
Queries.fetch_public_key(keyspace)
25+
Queries.fetch_public_key(realm)
3026
end
3127
end

apps/astarte_appengine_api/lib/astarte_appengine_api/device/device.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ defmodule Astarte.AppEngine.API.Device do
4040
alias Astarte.DataAccess.Device, as: DeviceQueries
4141
alias Astarte.DataAccess.Interface, as: InterfaceQueries
4242
alias Ecto.Changeset
43-
alias Astarte.Core.CQLUtils
43+
4444
require Logger
4545

4646
def list_devices!(realm_name, params) do

apps/astarte_appengine_api/lib/astarte_appengine_api/device/queries.ex

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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

apps/astarte_appengine_api/lib/astarte_appengine_api/groups/queries.ex

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
7070
with {:ok, %{device_id: device_id}} <-
7171
Ecto.Changeset.apply_action(device_changeset, :insert),
7272
{:group_exists?, true} <-
73-
{:group_exists?, group_exists?(realm_name, group_name)},
73+
{:group_exists?, group_exists?(keyspace, group_name)},
7474
:ok <- check_valid_device_for_group(keyspace, group_name, device_id),
7575
:ok <- add_to_group(keyspace, group_name, [device_id]) do
7676
:ok
@@ -94,9 +94,10 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
9494
end
9595

9696
def remove_device(realm_name, group_name, device_id) do
97+
keyspace = DataAccessRealm.keyspace_name(realm_name)
98+
9799
with {:group_exists?, true} <-
98-
{:group_exists?, group_exists?(realm_name, group_name)},
99-
keyspace = DataAccessRealm.keyspace_name(realm_name),
100+
{:group_exists?, group_exists?(keyspace, group_name)},
100101
:ok <- remove_from_group(keyspace, group_name, device_id) do
101102
:ok
102103
else
@@ -241,19 +242,17 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
241242
end
242243
end
243244

244-
defp compute_device_status(realm_name, device_row) do
245+
defp compute_device_status(keyspace, device_row) do
245246
%{
246247
device_id: device_id
247248
} = device_row
248249

249250
device_status = DeviceStatus.from_db_row(device_row)
250-
deletion_in_progress? = deletion_in_progress?(realm_name, device_id)
251+
deletion_in_progress? = deletion_in_progress?(keyspace, device_id)
251252
%{device_status | deletion_in_progress: deletion_in_progress?}
252253
end
253254

254-
defp deletion_in_progress?(realm_name, device_id) do
255-
keyspace = DataAccessRealm.keyspace_name(realm_name)
256-
255+
defp deletion_in_progress?(keyspace, device_id) do
257256
case Repo.fetch(DeletionInProgress, device_id, prefix: keyspace) do
258257
{:ok, _} ->
259258
true
@@ -278,9 +277,7 @@ defmodule Astarte.AppEngine.API.Groups.Queries do
278277
end
279278
end
280279

281-
defp group_exists?(realm_name, group_name) do
282-
keyspace = DataAccessRealm.keyspace_name(realm_name)
283-
280+
defp group_exists?(keyspace, group_name) do
284281
query =
285282
from d in GroupedDevice,
286283
prefix: ^keyspace,

apps/astarte_appengine_api/lib/astarte_appengine_api/health.ex

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,20 @@
1717
#
1818

1919
defmodule Astarte.AppEngine.API.Health do
20-
alias Astarte.AppEngine.API.Realm
2120
alias Astarte.AppEngine.API.Queries
2221

2322
require Logger
2423

2524
def get_health do
26-
astarte_keyspace = Realm.keyspace_name("astarte")
27-
28-
case Queries.check_astarte_health(astarte_keyspace, :quorum) do
25+
case Queries.check_astarte_health(:quorum) do
2926
:ok ->
3027
:ok
3128

3229
{:error, :database_connection_error} ->
3330
{:error, :bad_health}
3431

3532
{:error, :health_check_bad} ->
36-
case Queries.check_astarte_health(astarte_keyspace, :one) do
33+
case Queries.check_astarte_health(:one) do
3734
:ok -> {:error, :degraded_health}
3835
_error -> {:error, :bad_health}
3936
end

0 commit comments

Comments
 (0)