Selecto.Error (Selecto v0.3.8)

Standardized error structure for all Selecto operations.

Provides consistent error handling across the Selecto ecosystem with structured error information including context, query details, and actionable error types.

error-types

Error Types

  • :connection_error - Database connection failures
  • :query_error - SQL query execution failures
  • :validation_error - Input validation failures
  • :configuration_error - Invalid domain or Selecto configuration
  • :no_results - Query returned no results when one expected
  • :multiple_results - Query returned multiple results when one expected
  • :timeout_error - Query execution timeout

examples

Examples

# Connection error
{:error, %Selecto.Error{
  type: :connection_error,
  message: "Failed to connect to database",
  details: %{host: "localhost", port: 5432}
}}

# Query error with context
{:error, %Selecto.Error{
  type: :query_error,
  message: "Column 'invalid_col' does not exist",
  query: "SELECT invalid_col FROM users",
  params: [],
  details: %{column: "invalid_col", table: "users"}
}}

Link to this section Summary

Functions

Creates a configuration error.

Creates a connection error.

Creates a field resolution error with context.

Converts various error types to standardized Selecto.Error.

Creates a no results error for execute_one/2.

Creates a query execution error with SQL context.

Creates a query generation error.

Creates a timeout error.

Creates a user-friendly error message for display.

Converts a Selecto.Error to an exception for raising.

Creates a transformation error for output format processing.

Creates a validation error.

Link to this section Types

Link to this type

error_type()

@type error_type() ::
  :connection_error
  | :query_error
  | :validation_error
  | :configuration_error
  | :no_results
  | :multiple_results
  | :timeout_error
  | :field_resolution_error
  | :transformation_error
@type t() :: %Selecto.Error{
  details: map() | nil,
  message: String.t(),
  params: [term()] | nil,
  query: String.t() | nil,
  type: error_type()
}

Link to this section Functions

Link to this function

configuration_error(message, details \\ %{})

@spec configuration_error(String.t(), map()) :: t()

Creates a configuration error.

Link to this function

connection_error(message, details \\ %{})

@spec connection_error(String.t(), map()) :: t()

Creates a connection error.

Link to this function

field_resolution_error(message, field_ref, context \\ %{})

@spec field_resolution_error(String.t(), term(), map()) :: t()

Creates a field resolution error with context.

Link to this function

from_reason(exception)

@spec from_reason(term()) :: t()

Converts various error types to standardized Selecto.Error.

Link to this function

multiple_results_error(message \\ "Query returned multiple results when one expected")

@spec multiple_results_error(String.t()) :: t()

Creates a multiple results error for execute_one/2.

Link to this function

no_results_error(message \\ "Query returned no results")

@spec no_results_error(String.t()) :: t()

Creates a no results error for execute_one/2.

Link to this function

query_error(message, query \\ nil, params \\ [], details \\ %{})

@spec query_error(String.t(), String.t() | nil, [term()], map()) :: t()

Creates a query execution error with SQL context.

Link to this function

query_generation_error(message, details \\ %{})

@spec query_generation_error(String.t(), map()) :: t()

Creates a query generation error.

Link to this function

timeout_error(message, details \\ %{})

@spec timeout_error(String.t(), map()) :: t()

Creates a timeout error.

Link to this function

to_display_message(error)

@spec to_display_message(t()) :: String.t()

Creates a user-friendly error message for display.

Link to this function

to_exception(error)

@spec to_exception(t()) :: Exception.t()

Converts a Selecto.Error to an exception for raising.

Link to this function

transformation_error(message, details \\ %{})

@spec transformation_error(String.t(), map()) :: t()

Creates a transformation error for output format processing.

Link to this function

validation_error(message, details \\ %{})

@spec validation_error(String.t(), map()) :: t()

Creates a validation error.