File size: 778 Bytes
8da2481
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
defmodule PlausibleWeb.Api.ExternalQueryApiController do
  @moduledoc false

  use PlausibleWeb, :controller
  use Plausible.Repo
  use PlausibleWeb.Plugs.ErrorHandler
  alias Plausible.Stats.{Query, QueryError}

  def query(conn, params) do
    site = Repo.preload(conn.assigns.site, :owners)

    case Query.parse_and_build(site, params,
           debug_metadata: debug_metadata(conn),
           now: conn.private[:now]
         ) do
      {:ok, query} ->
        results = Plausible.Stats.query(site, query)
        json(conn, results)

      {:error, %QueryError{message: message}} ->
        conn
        |> put_status(400)
        |> json(%{error: message})
    end
  end

  def schema(conn, _params) do
    json(conn, Plausible.Stats.JSONSchema.raw_schema())
  end
end