Skip to content

Commit

Permalink
log PA message create and update
Browse files Browse the repository at this point in the history
  • Loading branch information
panentheos committed Nov 25, 2024
1 parent 0a070dd commit 2e67a42
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
11 changes: 11 additions & 0 deletions lib/screenplay/util.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ defmodule Screenplay.Util do
@moduledoc """
Utility functions
"""
require Logger

@spec trim_username(String.t()) :: String.t()
def trim_username(nil), do: nil
Expand All @@ -27,4 +28,14 @@ defmodule Screenplay.Util do
|> Ecto.Changeset.traverse_errors(fn {msg, _} -> msg end)
|> Enum.map_join(", ", fn {field, msg} -> "#{field}: #{msg}" end)
end

@doc """
Log structured data. All passed values must implement the Jason.Encoder protocol
"""
@spec log(String.t(), keyword()) :: :ok
def log(event, extras) do
([event: event] ++ extras)
|> Enum.map_join(" ", fn {k, v} -> "#{k}=#{Jason.encode!(v)}" end)
|> Logger.info()
end
end
17 changes: 16 additions & 1 deletion lib/screenplay_web/controllers/pa_messages_api_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,16 @@ defmodule ScreenplayWeb.PaMessagesApiController do
end

def create(conn, params) do
with {:ok, _} <- PaMessages.create_message(params) do
with {:ok, message} <- PaMessages.create_message(params) do
log_pa_message("pa_message_created", message, conn)
json(conn, %{success: true})
end
end

def update(conn, params = %{"id" => id}) do
if pa_message = PaMessages.get_message(id) do
with {:ok, updated_pa_message} <- PaMessages.update_message(pa_message, params) do
log_pa_message("pa_message_updated", updated_pa_message, conn)
json(conn, updated_pa_message)
end
else
Expand All @@ -56,4 +58,17 @@ defmodule ScreenplayWeb.PaMessagesApiController do
|> json(%{error: "not_found"})
end
end

defp log_pa_message(event, message, conn) do
Screenplay.Util.log(event,
visual_text: message.visual_text,
audio_text: message.audio_text,
sign_ids: message.sign_ids,
start_datetime: message.start_datetime,
end_datetime: message.end_datetime,
priority: message.priority,
interval: message.interval_in_minutes,
user: get_session(conn, "username") |> Screenplay.Util.trim_username()
)
end
end

0 comments on commit 2e67a42

Please sign in to comment.