Skip to content

Commit a50aa44

Browse files
Fix nil is being preinted when params are nil #1
1 parent 76121f9 commit a50aa44

File tree

4 files changed

+25
-7
lines changed

4 files changed

+25
-7
lines changed

lib/ecto_logbook.ex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,16 @@ defmodule EctoLogbook do
146146
def preprocess_metadata(meta), do: meta
147147

148148
defp maybe_inline_params(query, metadata, conf, reset_color) do
149-
case conf[:inline_params] do
150-
true ->
149+
cond do
150+
conf[:inline_params] ->
151151
param_reset_color = (reset_color != "" && __MODULE__.Colors.sql_color(query)) || ""
152152
repo = (metadata[:repo] && metadata[:repo].__adapter__()) || nil
153153
__MODULE__.Inline.inline_params(query, metadata[:cast_params], param_reset_color, repo)
154154

155-
_ ->
155+
metadata[:cast_params] == nil ->
156+
query
157+
158+
true ->
156159
"#{query} #{inspect(metadata[:cast_params])}"
157160
end
158161
end

lib/ecto_logbook/inline.ex

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ defmodule EctoLogbook.Inline do
66
alias EctoLogbook.Colors
77
alias EctoLogbook.PrintableParameter
88

9+
@type params :: [any()] | nil
10+
@type color :: String.t()
11+
912
@spec inline_value(any(), String.t()) :: String.t()
1013
defp inline_value(value, reset_color) do
1114
value
@@ -18,8 +21,8 @@ defmodule EctoLogbook.Inline do
1821
|> Colors.colorize(IO.ANSI.light_blue(), reset_color)
1922
end
2023

21-
@spec reduce_query_params([String.t()], [any()], String.t(), String.t()) :: String.t()
22-
defp reduce_query_params([], _params, _color, acc), do: acc
24+
@spec reduce_query_params([String.t()], params(), color(), String.t()) :: String.t()
25+
defp reduce_query_params([], _params, _reset_color, acc), do: acc
2326

2427
defp reduce_query_params([part | parts], [param | params], color, acc) do
2528
reduce_query_params(parts, params, color, acc <> part <> inline_value(param, color))
@@ -32,8 +35,10 @@ defmodule EctoLogbook.Inline do
3235
@doc """
3336
Substitutes parameters placeholders in `query` with their actual values
3437
"""
35-
@spec inline_params(String.t(), [any()], String.t(), module()) :: String.t()
36-
def inline_params(query, [], _color, _repo_adapter), do: query
38+
@spec inline_params(String.t(), params(), color(), module()) :: String.t()
39+
def inline_params(query, [], _reset_color, _repo_adapter), do: query
40+
41+
def inline_params(query, nil, _reset_color, _repo_adapter), do: query
3742

3843
def inline_params(query, params, reset_color, Ecto.Adapters.Postgres) do
3944
String.split(query, ~r/\$\d+/) |> reduce_query_params(params, reset_color, "")

test/ecto_logbook_test.exs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ defmodule EctoLogbookTest do
9999
~S|INSERT INTO "posts" ("array_of_enums") VALUES (?1) RETURNING "id" [[:foo, :baz]]|
100100
|> String.replace("\"", "\\\"")
101101
end
102+
103+
test "don't inspect params when nil" do
104+
assert :ok = EctoLogbook.install(Repo2)
105+
assert capture_log(fn -> Repo2.query!("SELECT 1") end) =~ ~S|msg="SELECT 1"|
106+
end
102107
end
103108

104109
defp setup_repo(repo) do

test/ecto_logbook_test/inline_test.exs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ defmodule EctoLogbookTest.InlineTest do
1717
"query $1 @2 ?"
1818
end
1919

20+
test "query is unchanged when params are nil" do
21+
assert Inline.inline_params("query $1 @2 ?", nil, @disable_color, Ecto.Adapters.Postgres) ==
22+
"query $1 @2 ?"
23+
end
24+
2025
test "query is unchanged when the adapter is not supported" do
2126
assert Inline.inline_params(
2227
"query $1 @2 ?",

0 commit comments

Comments
 (0)