Storage operations for Lotus queries.
Handles CRUD operations for persisting and retrieving queries.
Summary
Functions
Creates a new query.
Deletes a query.
Gets a single query by ID.
Gets a single query by ID.
Lists all queries from the database.
Lists queries with filtering search term.
Run a saved query directly from Storage.
Updates a query.
Types
@type attrs() :: map()
@type changeset_error() :: Ecto.Changeset.t()
@type query_list() :: [Lotus.Storage.Query.t()]
Functions
@spec create_query(attrs()) :: {:ok, Lotus.Storage.Query.t()} | {:error, changeset_error()}
Creates a new query.
Examples
iex> create_query(%{name: "Users", statement: "SELECT * FROM users"})
{:ok, %Query{}}
iex> create_query(%{})
{:error, %Ecto.Changeset{}}
@spec delete_query(Lotus.Storage.Query.t()) :: {:ok, Lotus.Storage.Query.t()} | {:error, changeset_error()}
Deletes a query.
Examples
iex> delete_query(query)
{:ok, %Query{}}
@spec get_query(id()) :: Lotus.Storage.Query.t() | nil
Gets a single query by ID.
Returns nil if the Query does not exist.
@spec get_query!(id()) :: Lotus.Storage.Query.t() | no_return()
Gets a single query by ID.
Raises Ecto.NoResultsError if the Query does not exist.
@spec list_queries() :: query_list()
Lists all queries from the database.
Returns a list of Query structs.
@spec list_queries_by(keyword()) :: [Lotus.Storage.Query.t()]
Lists queries with filtering search term.
Options
:search- Search term to match against query names (case insensitive)
Examples
iex> list_queries_by(search: "user")
[%Query{}, ...]
@spec run( Lotus.Storage.Query.t(), keyword() ) :: {:ok, Lotus.Result.t()} | {:error, term()}
Run a saved query directly from Storage.
This is a convenience function that delegates to Lotus.run_query/2.
Examples
query = get_query!(123)
{:ok, result} = run(query, statement_timeout_ms: 3_000)
@spec update_query(Lotus.Storage.Query.t(), attrs()) :: {:ok, Lotus.Storage.Query.t()} | {:error, changeset_error()}
Updates a query.
Examples
iex> update_query(query, %{name: "New Name"})
{:ok, %Query{}}
iex> update_query(query, %{name: ""})
{:error, %Ecto.Changeset{}}