mirror of
https://github.com/plausible/analytics.git
synced 2024-11-25 15:34:22 +03:00
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.
This commit is contained in:
parent
c932a25fd6
commit
1d2d6c3cec
@ -57,15 +57,19 @@ defmodule Plausible.Stats.Query do
|
||||
|
||||
Date.range(
|
||||
date_range.first,
|
||||
earliest(date_range.last, today)
|
||||
clamp(today, date_range.first, date_range.last)
|
||||
)
|
||||
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, lower_bound, upper_bound) do
|
||||
cond do
|
||||
Date.compare(date, lower_bound) == :lt -> lower_bound
|
||||
Date.compare(date, upper_bound) == :gt -> upper_bound
|
||||
true -> date
|
||||
end
|
||||
end
|
||||
|
||||
def set(query, keywords) do
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user