Packages

Plug and play analytics for Phoenix applications. Powered by DuckDB.

Current section

Files

Jump to
phoenix_analytics_duck lib phoenix_analytics entities request_log.ex
Raw

lib/phoenix_analytics/entities/request_log.ex

defmodule PhoenixAnalytics.Entities.RequestLog do
@moduledoc """
Represents a log entry for an HTTP request.
This struct contains various details about an HTTP request, including its
unique identifier, method, path, status code, duration, and other metadata.
"""
@typedoc "Unique identifier for the request"
@type request_id :: String.t()
@typedoc "HTTP method of the request"
@type method :: String.t()
@typedoc "Path of the request"
@type path :: String.t()
@typedoc "HTTP status code of the response"
@type status_code :: non_neg_integer()
@typedoc "Duration of the request in milliseconds"
@type duration_ms :: integer()
@typedoc "User agent string of the client"
@type user_agent :: String.t() | nil
@typedoc "IP address of the client"
@type remote_ip :: String.t() | nil
@typedoc "Referer URL of the request"
@type referer :: String.t() | nil
@typedoc "Type of device_type used for the request"
@type device_type :: String.t() | nil
@typedoc "Unique identifier for the session"
@type session_id :: String.t() | nil
@typedoc "Number of page views in the session"
@type session_page_views :: non_neg_integer() | nil
@typedoc "Timestamp when the log entry was inserted"
@type inserted_at :: NaiveDateTime.t() | nil
@type t :: %__MODULE__{
request_id: request_id(),
method: method(),
path: path(),
status_code: status_code(),
duration_ms: duration_ms(),
user_agent: user_agent(),
remote_ip: remote_ip(),
referer: referer(),
device_type: device_type(),
session_id: session_id(),
session_page_views: session_page_views(),
inserted_at: inserted_at()
}
defstruct [
:request_id,
:method,
:path,
:status_code,
:duration_ms,
:user_agent,
:remote_ip,
:referer,
:device_type,
:session_id,
:session_page_views,
:inserted_at
]
end