Skip to content

Commit 698082e

Browse files
committed
allow fixing now in the new endpoint via conn.private
1 parent bec63c3 commit 698082e

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

lib/plausible/stats/dashboard/query_parser.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ defmodule Plausible.Stats.Dashboard.QueryParser do
1414

1515
@valid_comparison_shorthand_keys Map.keys(@valid_comparison_shorthands)
1616

17-
def parse(params) do
17+
def parse(params, opts \\ []) do
1818
with {:ok, input_date_range} <- parse_input_date_range(params),
1919
{:ok, relative_date} <- parse_relative_date(params),
2020
{:ok, dimensions} <- ApiQueryParser.parse_dimensions(params["dimensions"]),
@@ -29,7 +29,8 @@ defmodule Plausible.Stats.Dashboard.QueryParser do
2929
filters: filters,
3030
metrics: metrics,
3131
include: include,
32-
skip_goal_existence_check: true
32+
skip_goal_existence_check: true,
33+
now: Keyword.get(opts, :now)
3334
})}
3435
end
3536
end

lib/plausible_web/controllers/api/stats_controller.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ defmodule PlausibleWeb.Api.StatsController do
3131

3232
def query(conn, params) do
3333
site = conn.assigns.site
34+
now = conn.private[:now]
3435

35-
with {:ok, %ParsedQueryParams{} = params} <- Dashboard.QueryParser.parse(params),
36+
with {:ok, %ParsedQueryParams{} = params} <- Dashboard.QueryParser.parse(params, now: now),
3637
{:ok, %Query{} = query} <- QueryBuilder.build(site, params, debug_metadata(conn)) do
3738
query =
3839
if query.include.time_labels do

test/plausible/stats/dashboard/query_parser_test.exs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,20 @@ defmodule Plausible.Stats.Dashboard.QueryParserTest do
249249
params = Map.merge(@base_params, %{"metrics" => []})
250250
assert {:error, %QueryError{code: :invalid_metrics}} = parse(params)
251251
end
252+
end
252253

253-
test "now can't be fixed externally" do
254+
describe "fixing now" do
255+
test "now can't be fixed externally via params" do
254256
params = Map.merge(@base_params, %{"now" => "2026-02-17T10:08:52.272894Z"})
255257
{:ok, parsed} = parse(params)
256258

257259
assert parsed.now == nil
258260
end
261+
262+
test "now can be fixed as an optional extra argument to parse/2" do
263+
{:ok, parsed} = parse(@base_params, now: ~U[2026-02-17 10:08:00Z])
264+
265+
assert parsed.now == ~U[2026-02-17 10:08:00Z]
266+
end
259267
end
260268
end

0 commit comments

Comments
 (0)