Skip to content

Commit 2e67a42

Browse files
committed
log PA message create and update
1 parent 0a070dd commit 2e67a42

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

lib/screenplay/util.ex

+11
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ defmodule Screenplay.Util do
22
@moduledoc """
33
Utility functions
44
"""
5+
require Logger
56

67
@spec trim_username(String.t()) :: String.t()
78
def trim_username(nil), do: nil
@@ -27,4 +28,14 @@ defmodule Screenplay.Util do
2728
|> Ecto.Changeset.traverse_errors(fn {msg, _} -> msg end)
2829
|> Enum.map_join(", ", fn {field, msg} -> "#{field}: #{msg}" end)
2930
end
31+
32+
@doc """
33+
Log structured data. All passed values must implement the Jason.Encoder protocol
34+
"""
35+
@spec log(String.t(), keyword()) :: :ok
36+
def log(event, extras) do
37+
([event: event] ++ extras)
38+
|> Enum.map_join(" ", fn {k, v} -> "#{k}=#{Jason.encode!(v)}" end)
39+
|> Logger.info()
40+
end
3041
end

lib/screenplay_web/controllers/pa_messages_api_controller.ex

+16-1
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,16 @@ defmodule ScreenplayWeb.PaMessagesApiController do
3030
end
3131

3232
def create(conn, params) do
33-
with {:ok, _} <- PaMessages.create_message(params) do
33+
with {:ok, message} <- PaMessages.create_message(params) do
34+
log_pa_message("pa_message_created", message, conn)
3435
json(conn, %{success: true})
3536
end
3637
end
3738

3839
def update(conn, params = %{"id" => id}) do
3940
if pa_message = PaMessages.get_message(id) do
4041
with {:ok, updated_pa_message} <- PaMessages.update_message(pa_message, params) do
42+
log_pa_message("pa_message_updated", updated_pa_message, conn)
4143
json(conn, updated_pa_message)
4244
end
4345
else
@@ -56,4 +58,17 @@ defmodule ScreenplayWeb.PaMessagesApiController do
5658
|> json(%{error: "not_found"})
5759
end
5860
end
61+
62+
defp log_pa_message(event, message, conn) do
63+
Screenplay.Util.log(event,
64+
visual_text: message.visual_text,
65+
audio_text: message.audio_text,
66+
sign_ids: message.sign_ids,
67+
start_datetime: message.start_datetime,
68+
end_datetime: message.end_datetime,
69+
priority: message.priority,
70+
interval: message.interval_in_minutes,
71+
user: get_session(conn, "username") |> Screenplay.Util.trim_username()
72+
)
73+
end
5974
end

0 commit comments

Comments
 (0)