71 lines
1.8 KiB
Elixir
71 lines
1.8 KiB
Elixir
defmodule Plausible.Site.TrackerScriptConfiguration do
|
|
@moduledoc """
|
|
Schema for tracker script configuration
|
|
"""
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
@type t() :: %__MODULE__{}
|
|
@derive {Jason.Encoder,
|
|
only: [
|
|
:id,
|
|
:installation_type,
|
|
:track_404_pages,
|
|
:hash_based_routing,
|
|
:outbound_links,
|
|
:file_downloads,
|
|
:revenue_tracking,
|
|
:tagged_events,
|
|
:form_submissions,
|
|
:pageview_props
|
|
]}
|
|
|
|
@primary_key {:id, Plausible.Ecto.Types.TrackerScriptNanoid, autogenerate: true}
|
|
schema "tracker_script_configuration" do
|
|
field :installation_type, Ecto.Enum, values: [:manual, :wordpress, :gtm, :npm, nil]
|
|
|
|
field :track_404_pages, :boolean, default: false
|
|
field :hash_based_routing, :boolean, default: false
|
|
field :outbound_links, :boolean, default: false
|
|
field :file_downloads, :boolean, default: false
|
|
field :revenue_tracking, :boolean, default: false
|
|
field :tagged_events, :boolean, default: false
|
|
field :form_submissions, :boolean, default: false
|
|
field :pageview_props, :boolean, default: false
|
|
|
|
belongs_to :site, Plausible.Site
|
|
|
|
timestamps()
|
|
end
|
|
|
|
def installation_changeset(struct, params) do
|
|
struct
|
|
|> cast(params, [
|
|
:installation_type,
|
|
:track_404_pages,
|
|
:hash_based_routing,
|
|
:outbound_links,
|
|
:file_downloads,
|
|
:revenue_tracking,
|
|
:tagged_events,
|
|
:form_submissions,
|
|
:pageview_props,
|
|
:site_id
|
|
])
|
|
|> validate_required([:site_id])
|
|
end
|
|
|
|
def plugins_api_changeset(struct, params) do
|
|
struct
|
|
|> cast(params, [
|
|
:installation_type,
|
|
:hash_based_routing,
|
|
:outbound_links,
|
|
:file_downloads,
|
|
:form_submissions,
|
|
:site_id
|
|
])
|
|
|> validate_required([:site_id])
|
|
end
|
|
end
|