analytics / lib /plausible /stats /custom_props.ex
Leon4gr45's picture
Upload folder using huggingface_hub (part 2)
8da2481 verified
Raw
History Blame Contribute Delete
869 Bytes
defmodule Plausible.Stats.CustomProps do
@moduledoc """
Module for querying user defined 'custom properties'.
"""
alias Plausible.Stats.Filters
use Plausible.ClickhouseRepo
import Plausible.Stats.Base
def fetch_prop_names(site, query) do
case Filters.get_toplevel_filter(query, "event:props:") do
[_op, "event:props:" <> key | _rest] ->
[key]
_ ->
from(e in base_event_query(query),
join: meta in fragment("meta"),
hints: "ARRAY",
on: true,
select: meta.key,
distinct: true
)
|> maybe_allowed_props_only(site)
|> ClickhouseRepo.all()
end
end
def maybe_allowed_props_only(q, site) do
case Plausible.Props.allowed_for(site) do
:all -> q
allowed_props -> from [..., m] in q, where: m.key in ^allowed_props
end
end
end