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
This commit is contained in:
Karl-Aksel Puulmann 2024-11-18 10:00:18 +02:00 committed by GitHub
parent d187e59049
commit 07a3436fa2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 3 deletions

View File

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

View File

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