Packages
electric
1.6.0
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.16
1.4.16-beta-1
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.14
1.1.13
1.1.12
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
retired
1.1.5
retired
1.1.4
retired
1.1.3
retired
1.1.2
1.1.1
1.1.0
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.15
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-beta.23
1.0.0-beta.22
1.0.0-beta.20
1.0.0-beta.19
1.0.0-beta.18
1.0.0-beta.17
1.0.0-beta.16
1.0.0-beta.15
1.0.0-beta.14
1.0.0-beta.13
1.0.0-beta.12
1.0.0-beta.11
1.0.0-beta.10
1.0.0-beta.9
1.0.0-beta.8
1.0.0-beta.7
1.0.0-beta.6
1.0.0-beta.5
1.0.0-beta.4
1.0.0-beta.3
1.0.0-beta.2
1.0.0-beta.1
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.5.2
0.4.4
Postgres sync engine. Sync little subsets of your Postgres data into local apps and services.
Current section
Files
Jump to
Current section
Files
lib/electric/plug/label_process_plug.ex
defmodule Electric.Plug.LabelProcessPlug do
@moduledoc """
A plug that assists debugging by labelling processes that handle requests with
details about the request.
The plug should be placed right after the match plug in the router:
plug :match
plug Electric.Plug.LabelProcessPlug
"""
def init(opts), do: opts
def call(conn, _opts) do
conn
|> process_label()
|> Process.set_label()
conn
end
@doc """
Returns a description of the HTTP request to be used as the label for the request process.
## Examples
iex> process_label(%{
...> method: "GET",
...> request_path: "/v1/shape",
...> query_string: "table=users&offset=-1",
...> assigns: %{plug_request_id: "F-jPUudNHxbD8lIAABQG"}
...> })
"Request F-jPUudNHxbD8lIAABQG - GET /v1/shape?table=users&offset=-1"
iex> process_label(%{
...> method: "GET",
...> request_path: "/v1/shape",
...> query_string: "table=users",
...> assigns: %{plug_request_id: "F-jPUudNHxbD8lIAABQG"}
...> })
"Request F-jPUudNHxbD8lIAABQG - GET /v1/shape?table=users"
"""
def process_label(conn) do
# If you change the format of this string, do not forget to update ElectricTelemetry.Processes.parse_binary_label().
"Request #{conn.assigns.plug_request_id} - #{conn.method} #{conn.request_path}#{query_suffix(conn)}"
end
defp query_suffix(%{query_string: ""}), do: ""
defp query_suffix(%{query_string: query_string}), do: "?#{query_string}"
end