GraphNight. Client
(graphnight v1.0.0)
Copy Markdown
High-level client for GraphNight semantic layer.
Provides a convenient Elixir API for working with GraphNight models and queries.
Summary
Functions
Build a simple aggregation query.
Create a new datasource.
Create a new model.
Delete a model.
Dry-run a query (returns SQL without executing).
Execute a query.
Get a datasource by name.
Get a model by name.
Initialize a GraphNight engine with the given storage path.
List all datasources.
List all models, optionally filtered by datasource.
Update an existing model.
Types
@type engine() :: GraphNight.engine()
Opaque engine handle returned by init/1.
Functions
@spec build_query(keyword()) :: GraphNight.Query.t()
Build a simple aggregation query.
Example
query = GraphNight.Client.build_query(
name: "orders",
measures: [GraphNight.Measure.new("revenue:sum")],
dimensions: [GraphNight.Dimension.new("status")],
filters: [GraphNight.Filter.eq("status", "completed")]
)
@spec create_datasource(engine(), GraphNight.DataSource.t()) :: {:ok, GraphNight.DataSource.t()} | {:error, String.t()}
Create a new datasource.
@spec create_model(engine(), GraphNight.Model.t()) :: {:ok, GraphNight.Model.t()} | {:error, String.t()}
Create a new model.
@spec delete_model(engine(), String.t(), String.t() | nil) :: {:ok, boolean()} | {:error, String.t()}
Delete a model.
@spec dry_run_query(engine(), GraphNight.Query.t()) :: {:ok, GraphNight.QueryResult.t()} | {:error, String.t()}
Dry-run a query (returns SQL without executing).
@spec execute_query(engine(), GraphNight.Query.t(), boolean()) :: {:ok, GraphNight.QueryResult.t()} | {:error, String.t()}
Execute a query.
Returns a QueryResult with data, columns, SQL, and execution time.
@spec get_datasource(engine(), String.t()) :: {:ok, GraphNight.DataSource.t() | nil} | {:error, String.t()}
Get a datasource by name.
@spec get_model(engine(), String.t(), String.t() | nil) :: {:ok, GraphNight.Model.t() | nil} | {:error, String.t()}
Get a model by name.
Initialize a GraphNight engine with the given storage path.
Example
{:ok, engine} = GraphNight.Client.init("./graphnight_data")
List all datasources.
@spec list_models(engine(), String.t() | nil) :: {:ok, [GraphNight.Model.t()]} | {:error, String.t()}
List all models, optionally filtered by datasource.
@spec update_model(engine(), String.t(), GraphNight.Model.t()) :: {:ok, GraphNight.Model.t()} | {:error, String.t()}
Update an existing model.