plausible / ecto_ch

Ecto ClickHouse adapter
MIT License
72 stars 10 forks source link

allow map params #155

Closed ruslandoga closed 6 months ago

ruslandoga commented 6 months ago

This PR allows passing map as params, e.g.

site_ids = [1, 2, 3]
site_ids_with_tzs = %{1 => "UTC", 2 => "Europe/Vienna", 3 => "Asia/Taipei"}

from e in "events",
  where: e.site_id in ^site_ids and e.timestamp >= ^0 and e.timestamp <= ^1,
  group_by: [e.site_id, selected_as(:bucket)],
  select: %{
    site_id: e.site_id,
    bucket: selected_as(fragment("toStartOfHour(toTimeZone(timestamp, ?[site_id]))", ^site_ids_with_tzs), :bucket),
    count: fragment("count()")
  }