Skip to content

Commit 9c4e911

Browse files
authored
Merge pull request #1089 from lusergit/chore/ecto-raise
feat(RM): let it crash!
2 parents 72aa77f + bb83486 commit 9c4e911

File tree

2 files changed

+6
-60
lines changed

2 files changed

+6
-60
lines changed

apps/astarte_realm_management/lib/astarte_realm_management/repo.ex

Lines changed: 5 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ defmodule Astarte.RealmManagement.Repo do
2727
alias Astarte.DataAccess.Config
2828
require Ecto.Query
2929

30-
@keyspace_does_not_exist_regex ~r/Keyspace (.*) does not exist/
31-
3230
@impl Ecto.Repo
3331
def init(_context, config) do
3432
config =
@@ -53,63 +51,15 @@ defmodule Astarte.RealmManagement.Repo do
5351
def fetch_one(queryable, opts \\ []) do
5452
{error, opts} = Keyword.pop_first(opts, :error, :not_found)
5553

56-
try do
57-
case all(queryable, opts) do
58-
[item] -> {:ok, item}
59-
[] -> {:error, error}
60-
other -> raise Ecto.MultipleResultsError, queryable: queryable, count: length(other)
61-
end
62-
rescue
63-
err in Xandra.Error ->
64-
handle_xandra_error(err)
65-
66-
err in Xandra.ConnectionError ->
67-
_ =
68-
Logger.warning("Database connection error #{Exception.message(err)}.",
69-
tag: "database_connection_error"
70-
)
71-
72-
{:error, :database_connection_error}
54+
case all(queryable, opts) do
55+
[item] -> {:ok, item}
56+
[] -> {:error, error}
57+
other -> raise Ecto.MultipleResultsError, queryable: queryable, count: length(other)
7358
end
7459
end
7560

7661
def fetch_all(queryable, opts \\ []) do
77-
try do
78-
{:ok, all(queryable, opts)}
79-
rescue
80-
err in Xandra.Error ->
81-
handle_xandra_error(err)
82-
83-
err in Xandra.ConnectionError ->
84-
_ =
85-
Logger.warning("Database connection error #{Exception.message(err)}.",
86-
tag: "database_connection_error"
87-
)
88-
89-
{:error, :database_connection_error}
90-
end
91-
end
92-
93-
defp handle_xandra_error(error) do
94-
%Xandra.Error{message: message} = error
95-
96-
case Regex.run(@keyspace_does_not_exist_regex, message) do
97-
[_message, keyspace] ->
98-
Logger.warning("Keyspace #{keyspace} does not exist.",
99-
tag: "realm_not_found"
100-
)
101-
102-
{:error, :realm_not_found}
103-
104-
nil ->
105-
_ =
106-
Logger.warning(
107-
"Database error: #{Exception.message(error)}.",
108-
tag: "database_error"
109-
)
110-
111-
{:error, :database_error}
112-
end
62+
{:ok, all(queryable, opts)}
11363
end
11464

11565
@doc """

apps/astarte_realm_management/test/astarte_realm_management/engine_test.exs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,7 +1194,7 @@ defmodule Astarte.RealmManagement.EngineTest do
11941194
end
11951195

11961196
test "get JWT public key PEM with unexisting realm" do
1197-
assert Engine.get_jwt_public_key_pem("notexisting") == {:error, :realm_not_found}
1197+
assert_raise Xandra.Error, fn -> Engine.get_jwt_public_key_pem("notexisting") end
11981198
end
11991199

12001200
test "update JWT public key PEM" do
@@ -1212,10 +1212,6 @@ defmodule Astarte.RealmManagement.EngineTest do
12121212
{:ok, DatabaseTestHelper.jwt_public_key_pem_fixture()}
12131213
end
12141214

1215-
test "update JWT public key PEM with unexisting realm" do
1216-
assert Engine.get_jwt_public_key_pem("notexisting") == {:error, :realm_not_found}
1217-
end
1218-
12191215
test "install HTTP trigger" do
12201216
trigger_name = "http_trigger"
12211217

0 commit comments

Comments
 (0)