| 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 |
|
|