From 07a3436fa298dfd7e659aa40bd62ad49cd1ec1f5 Mon Sep 17 00:00:00 2001 From: Karl-Aksel Puulmann Date: Mon, 18 Nov 2024 10:00:18 +0200 Subject: [PATCH] Follow-up to Solve noisy warnings about a negative range was inferred for Date.range/2 (#4816) * Clamp dates on both directions We could still get warnings about negative date ranges when the date being queried is in the future. This could happen if the users local time is in the future for some reason or they manually edit the url. * Update cond --- lib/plausible/stats/query.ex | 10 +++++++--- test/plausible/stats/query_test.exs | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/plausible/stats/query.ex b/lib/plausible/stats/query.ex index f5bd669a48a3..c4e18a01ec4c 100644 --- a/lib/plausible/stats/query.ex +++ b/lib/plausible/stats/query.ex @@ -57,15 +57,19 @@ defmodule Plausible.Stats.Query do Date.range( date_range.first, - earliest(date_range.last, today) + clamp(today, date_range) ) else date_range end end - defp earliest(a, b) do - if Date.compare(a, b) in [:eq, :lt], do: a, else: b + defp clamp(date, date_range) do + cond do + date in date_range -> date + Date.before?(date, date_range.first) -> date_range.first + Date.after?(date, date_range.last) -> date_range.last + end end def set(query, keywords) do diff --git a/test/plausible/stats/query_test.exs b/test/plausible/stats/query_test.exs index fae5524c35d3..ce5af98cd8e6 100644 --- a/test/plausible/stats/query_test.exs +++ b/test/plausible/stats/query_test.exs @@ -266,6 +266,13 @@ defmodule Plausible.Stats.QueryTest do ~U[2024-05-07 07:00:00Z], trim_trailing: true ) == Date.range(~D[2024-05-05], ~D[2024-05-06]) + + assert date_range( + {~U[2024-05-05 12:00:00Z], ~U[2024-05-08 11:59:59Z]}, + "Etc/GMT+12", + ~U[2024-05-03 07:00:00Z], + trim_trailing: true + ) == Date.range(~D[2024-05-05], ~D[2024-05-05]) end end