Service functions for managing query visualizations in Lotus storage.
- CRUD wrappers around
Lotus.Storage.QueryVisualization - Validation against a
%Lotus.Result{}to ensure field references exist and numeric aggregations apply to numeric columns.
Summary
Functions
Validates a visualization config against a query result.
Types
Functions
@spec create_visualization(Lotus.Storage.Query.t() | id(), attrs()) :: {:ok, Lotus.Storage.QueryVisualization.t()} | {:error, Ecto.Changeset.t()}
@spec delete_visualization(Lotus.Storage.QueryVisualization.t() | id()) :: {:ok, Lotus.Storage.QueryVisualization.t()} | {:error, Ecto.Changeset.t()}
@spec list_visualizations(Lotus.Storage.Query.t() | id()) :: [ Lotus.Storage.QueryVisualization.t() ]
@spec update_visualization(Lotus.Storage.QueryVisualization.t(), attrs()) :: {:ok, Lotus.Storage.QueryVisualization.t()} | {:error, Ecto.Changeset.t()}
@spec validate_against_result(map(), Lotus.Result.t()) :: :ok | {:error, String.t()}
Validates a visualization config against a query result.
Checks:
- Referenced fields exist in
result.columnsfor x, y, series, and filters - Numeric aggregations (:sum, :avg) only apply to numeric columns
This does not persist anything; it is safe to call before create_/update_.